| | |
| | | staticClass: _vm._$s(19, "sc", "img-box"), |
| | | attrs: { _i: 19 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "swiper", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 20, |
| | | "sc", |
| | | "swiper-body-main" |
| | | ), |
| | | attrs: { _i: 20 }, |
| | | }, |
| | | _vm._l( |
| | | _vm._$s(21, "f", { |
| | | forItems: _vm.locList, |
| | | }), |
| | | function (item, i, $20, $30) { |
| | | return _c( |
| | | "swiper-item", |
| | | { |
| | | key: _vm._$s(21, "f", { |
| | | forIndex: $20, |
| | | key: i, |
| | | }), |
| | | staticClass: _vm._$s( |
| | | _vm._l( |
| | | _vm._$s(20, "f", { forItems: _vm.locList }), |
| | | function (item, i, $20, $30) { |
| | | return _c( |
| | | "view", |
| | | { |
| | | key: _vm._$s(20, "f", { |
| | | forIndex: $20, |
| | | key: i, |
| | | }), |
| | | }, |
| | | [ |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "21-" + $30, |
| | | "sc", |
| | | "swiper-item" |
| | | ), |
| | | attrs: { _i: "21-" + $30 }, |
| | | }, |
| | | [ |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "22-" + $30, |
| | | "t0-0", |
| | | _vm._s(item.matnr) |
| | | ) |
| | | ), |
| | | ]), |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "23-" + $30, |
| | | "t0-0", |
| | | _vm._s(item.matnrCount) |
| | | ) |
| | | ), |
| | | ]), |
| | | ] |
| | | ) |
| | | } |
| | | ), |
| | | 0 |
| | | ), |
| | | ] |
| | | "t0-0", |
| | | _vm._s(item.matnr) |
| | | ) |
| | | ), |
| | | ]), |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "22-" + $30, |
| | | "t0-0", |
| | | _vm._s(item.matnrCount) |
| | | ) |
| | | ), |
| | | ]), |
| | | ] |
| | | ) |
| | | } |
| | | ), |
| | | 0 |
| | | ), |
| | | ] |
| | | ), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(24, "sc", "box-item"), |
| | | attrs: { _i: 24 }, |
| | | staticClass: _vm._$s(23, "sc", "box-item"), |
| | | attrs: { _i: 23 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(25, "sc", "flex-row"), |
| | | attrs: { _i: 25 }, |
| | | staticClass: _vm._$s(24, "sc", "flex-row"), |
| | | attrs: { _i: 24 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 26, |
| | | 25, |
| | | "sc", |
| | | "flex-col" |
| | | ), |
| | | attrs: { _i: 26 }, |
| | | attrs: { _i: 25 }, |
| | | }, |
| | | [ |
| | | _c("text", { |
| | | staticClass: _vm._$s( |
| | | 27, |
| | | 26, |
| | | "sc", |
| | | "item-title" |
| | | ), |
| | | attrs: { _i: 27 }, |
| | | attrs: { _i: 26 }, |
| | | }), |
| | | _c("text", { |
| | | staticClass: _vm._$s( |
| | | 28, |
| | | 27, |
| | | "sc", |
| | | "item-subTitle" |
| | | ), |
| | | attrs: { _i: 28 }, |
| | | attrs: { _i: 27 }, |
| | | }), |
| | | ] |
| | | ), |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 30, |
| | | 29, |
| | | "sc", |
| | | "flex-col" |
| | | ), |
| | | attrs: { _i: 30 }, |
| | | attrs: { _i: 29 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "text", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 31, |
| | | 30, |
| | | "sc", |
| | | "item-title" |
| | | ), |
| | | attrs: { _i: 31 }, |
| | | attrs: { _i: 30 }, |
| | | }, |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 31, |
| | | 30, |
| | | "t0-0", |
| | | _vm._s(_vm.baseInfo.usedPr) |
| | | ) |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(32, "sc", "flex-col"), |
| | | attrs: { _i: 32 }, |
| | | staticClass: _vm._$s(31, "sc", "flex-col"), |
| | | attrs: { _i: 31 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 33, |
| | | 32, |
| | | "sc", |
| | | "flex-row" |
| | | ), |
| | | attrs: { _i: 33 }, |
| | | attrs: { _i: 32 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 34, |
| | | 33, |
| | | "sc", |
| | | "progressBar" |
| | | ), |
| | | attrs: { _i: 34 }, |
| | | attrs: { _i: 33 }, |
| | | }, |
| | | [ |
| | | _c("view", { |
| | | staticClass: _vm._$s( |
| | | 35, |
| | | 34, |
| | | "sc", |
| | | "progress" |
| | | ), |
| | | style: _vm._$s( |
| | | 35, |
| | | 34, |
| | | "s", |
| | | "width:" + |
| | | _vm.baseInfo.usedPr + |
| | | "%" |
| | | ), |
| | | attrs: { _i: 35 }, |
| | | attrs: { _i: 34 }, |
| | | }), |
| | | ] |
| | | ), |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 36, |
| | | 35, |
| | | "t0-0", |
| | | _vm._s(_vm.baseInfo.used) |
| | | ) |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(37, "sc", "mian-item"), |
| | | attrs: { _i: 37 }, |
| | | staticClass: _vm._$s(36, "sc", "mian-item"), |
| | | attrs: { _i: 36 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(38, "sc", "mian-item-box"), |
| | | attrs: { _i: 38 }, |
| | | staticClass: _vm._$s(37, "sc", "mian-item-box"), |
| | | attrs: { _i: 37 }, |
| | | }, |
| | | [ |
| | | _c("view", [ |
| | | _c( |
| | | "view", |
| | | [ |
| | | _c("y-box", { attrs: { _i: 41 } }, [ |
| | | _c("y-box", { attrs: { _i: 40 } }, [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 42, |
| | | 41, |
| | | "sc", |
| | | "box-item" |
| | | ), |
| | | attrs: { _i: 42 }, |
| | | attrs: { _i: 41 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 43, |
| | | 42, |
| | | "sc", |
| | | "flex-row" |
| | | ), |
| | | attrs: { _i: 43 }, |
| | | attrs: { _i: 42 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 44, |
| | | 43, |
| | | "sc", |
| | | "flex-col" |
| | | ), |
| | | attrs: { _i: 44 }, |
| | | attrs: { _i: 43 }, |
| | | }, |
| | | [ |
| | | _c("text", { |
| | | staticClass: _vm._$s( |
| | | 45, |
| | | 44, |
| | | "sc", |
| | | "item-title" |
| | | ), |
| | | attrs: { _i: 45 }, |
| | | attrs: { _i: 44 }, |
| | | }), |
| | | _c("text", { |
| | | staticClass: _vm._$s( |
| | | 46, |
| | | 45, |
| | | "sc", |
| | | "item-subTitle" |
| | | ), |
| | | attrs: { _i: 46 }, |
| | | attrs: { _i: 45 }, |
| | | }), |
| | | ] |
| | | ), |
| | | _c("view", [ |
| | | _c("view", { |
| | | staticClass: _vm._$s( |
| | | 48, |
| | | 47, |
| | | "sc", |
| | | "flex-col" |
| | | ), |
| | | attrs: { _i: 48 }, |
| | | attrs: { _i: 47 }, |
| | | }), |
| | | ]), |
| | | ] |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 49, |
| | | 48, |
| | | "sc", |
| | | "charts-box" |
| | | ), |
| | | attrs: { _i: 49 }, |
| | | attrs: { _i: 48 }, |
| | | }, |
| | | [ |
| | | _c("qiun-data-charts", { |
| | |
| | | chartData: _vm.chartsDataLine1, |
| | | echartsH5: true, |
| | | echartsApp: true, |
| | | _i: 50, |
| | | _i: 49, |
| | | }, |
| | | }), |
| | | ], |
| | |
| | | _c( |
| | | "view", |
| | | [ |
| | | _c("y-box", { attrs: { _i: 53 } }, [ |
| | | _c("y-box", { attrs: { _i: 52 } }, [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 54, |
| | | 53, |
| | | "sc", |
| | | "box-item" |
| | | ), |
| | | attrs: { _i: 54 }, |
| | | attrs: { _i: 53 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 55, |
| | | 54, |
| | | "sc", |
| | | "flex-row" |
| | | ), |
| | | attrs: { _i: 55 }, |
| | | attrs: { _i: 54 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 56, |
| | | 55, |
| | | "sc", |
| | | "flex-col" |
| | | ), |
| | | attrs: { _i: 56 }, |
| | | attrs: { _i: 55 }, |
| | | }, |
| | | [ |
| | | _c("text", { |
| | | staticClass: _vm._$s( |
| | | 57, |
| | | 56, |
| | | "sc", |
| | | "item-title" |
| | | ), |
| | | attrs: { _i: 57 }, |
| | | attrs: { _i: 56 }, |
| | | }), |
| | | _c("text", { |
| | | staticClass: _vm._$s( |
| | | 58, |
| | | 57, |
| | | "sc", |
| | | "item-subTitle" |
| | | ), |
| | | attrs: { _i: 58 }, |
| | | attrs: { _i: 57 }, |
| | | }), |
| | | ] |
| | | ), |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 60, |
| | | 59, |
| | | "sc", |
| | | "flex-col" |
| | | ), |
| | | attrs: { _i: 60 }, |
| | | attrs: { _i: 59 }, |
| | | }, |
| | | [ |
| | | _c("text", { |
| | | staticClass: _vm._$s( |
| | | 61, |
| | | 60, |
| | | "sc", |
| | | "item-title" |
| | | ), |
| | | attrs: { _i: 61 }, |
| | | attrs: { _i: 60 }, |
| | | }), |
| | | _c("text", { |
| | | staticClass: _vm._$s( |
| | | 62, |
| | | 61, |
| | | "sc", |
| | | "item-subTitle" |
| | | ), |
| | | attrs: { _i: 62 }, |
| | | attrs: { _i: 61 }, |
| | | }), |
| | | ] |
| | | ), |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 63, |
| | | 62, |
| | | "sc", |
| | | "flex-row" |
| | | ), |
| | | attrs: { _i: 63 }, |
| | | attrs: { _i: 62 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 64, |
| | | 63, |
| | | "sc", |
| | | "charts-box-ring" |
| | | ), |
| | | attrs: { _i: 64 }, |
| | | attrs: { _i: 63 }, |
| | | }, |
| | | [ |
| | | _c("qiun-data-charts", { |
| | |
| | | chartData: _vm.chartsDataPie2, |
| | | echartsH5: true, |
| | | echartsApp: true, |
| | | _i: 65, |
| | | _i: 64, |
| | | }, |
| | | }), |
| | | ], |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 67, |
| | | 66, |
| | | "sc", |
| | | "flex-row sub-info" |
| | | ), |
| | | attrs: { _i: 67 }, |
| | | attrs: { _i: 66 }, |
| | | }, |
| | | [ |
| | | _c("image", { |
| | | attrs: { |
| | | src: _vm._$s( |
| | | 68, |
| | | 67, |
| | | "a-src", |
| | | __webpack_require__(/*! ../../static/g1.png */ 112) |
| | | ), |
| | | _i: 68, |
| | | _i: 67, |
| | | }, |
| | | }), |
| | | _c("view"), |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 70, |
| | | 69, |
| | | "t0-0", |
| | | _vm._s( |
| | | _vm.baseInfo.stockCount |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 71, |
| | | 70, |
| | | "sc", |
| | | "flex-row sub-info" |
| | | ), |
| | | attrs: { _i: 71 }, |
| | | attrs: { _i: 70 }, |
| | | }, |
| | | [ |
| | | _c("image", { |
| | | attrs: { |
| | | src: _vm._$s( |
| | | 72, |
| | | 71, |
| | | "a-src", |
| | | __webpack_require__(/*! ../../static/f1.png */ 113) |
| | | ), |
| | | _i: 72, |
| | | _i: 71, |
| | | }, |
| | | }), |
| | | _c("view"), |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 74, |
| | | 73, |
| | | "t0-0", |
| | | _vm._s( |
| | | _vm.baseInfo.emptyCount |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 75, |
| | | 74, |
| | | "sc", |
| | | "flex-row sub-info" |
| | | ), |
| | | attrs: { _i: 75 }, |
| | | attrs: { _i: 74 }, |
| | | }, |
| | | [ |
| | | _c("image", { |
| | | attrs: { |
| | | src: _vm._$s( |
| | | 76, |
| | | 75, |
| | | "a-src", |
| | | __webpack_require__(/*! ../../static/e1.png */ 114) |
| | | ), |
| | | _i: 76, |
| | | _i: 75, |
| | | }, |
| | | }), |
| | | _c("view"), |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 78, |
| | | 77, |
| | | "t0-0", |
| | | _vm._s( |
| | | _vm.baseInfo.noneCount |
| | |
| | | _c("image", { |
| | | attrs: { |
| | | src: _vm._$s( |
| | | 82, |
| | | 81, |
| | | "a-src", |
| | | __webpack_require__(/*! ../../static/img/logo-bai.png */ 115) |
| | | ), |
| | | _i: 82, |
| | | _i: 81, |
| | | }, |
| | | }), |
| | | ]), |
| | |
| | | duration: _vm.duration, |
| | | "mode-class": _vm.infoMode, |
| | | show: _vm.infoViewShow, |
| | | _i: 83, |
| | | _i: 82, |
| | | }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { staticClass: _vm._$s(84, "sc", "home-view"), attrs: { _i: 84 } }, |
| | | { staticClass: _vm._$s(83, "sc", "home-view"), attrs: { _i: 83 } }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { staticClass: _vm._$s(85, "sc", "head"), attrs: { _i: 85 } }, |
| | | { staticClass: _vm._$s(84, "sc", "head"), attrs: { _i: 84 } }, |
| | | [ |
| | | _c("text", [ |
| | | _vm._v(_vm._$s(86, "t0-0", _vm._s(_vm.infoText.title))), |
| | | _vm._v(_vm._$s(85, "t0-0", _vm._s(_vm.infoText.title))), |
| | | ]), |
| | | ] |
| | | ), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(87, "sc", "time-tools"), |
| | | attrs: { _i: 87 }, |
| | | staticClass: _vm._$s(86, "sc", "time-tools"), |
| | | attrs: { _i: 86 }, |
| | | }, |
| | | [_vm._v(_vm._$s(87, "t0-0", _vm._s(_vm.calendar)))] |
| | | [_vm._v(_vm._$s(86, "t0-0", _vm._s(_vm.calendar)))] |
| | | ), |
| | | _c("view", { |
| | | staticClass: _vm._$s(88, "sc", "button-left"), |
| | | staticClass: _vm._$s(87, "sc", "button-left"), |
| | | attrs: { _i: 87 }, |
| | | on: { |
| | | click: function ($event) { |
| | | return _vm.ejected() |
| | | }, |
| | | }, |
| | | }), |
| | | _c("view", { |
| | | staticClass: _vm._$s(88, "sc", "button-right"), |
| | | attrs: { _i: 88 }, |
| | | on: { |
| | | click: function ($event) { |
| | |
| | | }, |
| | | }, |
| | | }), |
| | | _c("view", { |
| | | staticClass: _vm._$s(89, "sc", "button-right"), |
| | | attrs: { _i: 89 }, |
| | | on: { |
| | | click: function ($event) { |
| | | return _vm.ejected() |
| | | }, |
| | | }, |
| | | }), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(90, "sc", "info-main"), |
| | | attrs: { _i: 90 }, |
| | | staticClass: _vm._$s(89, "sc", "info-main"), |
| | | attrs: { _i: 89 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(91, "sc", "info-box"), |
| | | attrs: { _i: 91 }, |
| | | staticClass: _vm._$s(90, "sc", "info-box"), |
| | | attrs: { _i: 90 }, |
| | | }, |
| | | [ |
| | | _c("y-box", { attrs: { _i: 92 } }, [ |
| | | _c("y-box", { attrs: { _i: 91 } }, [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(93, "sc", "text-content"), |
| | | attrs: { _i: 93 }, |
| | | staticClass: _vm._$s(92, "sc", "text-content"), |
| | | attrs: { _i: 92 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(94, "sc", "swiper-head"), |
| | | attrs: { _i: 94 }, |
| | | staticClass: _vm._$s(93, "sc", "swiper-head"), |
| | | attrs: { _i: 93 }, |
| | | }, |
| | | [ |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 95, |
| | | 94, |
| | | "t0-0", |
| | | _vm._s(_vm.infoText.barcode) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 96, |
| | | 95, |
| | | "t0-0", |
| | | _vm._s(_vm.infoText.workNo) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 97, |
| | | 96, |
| | | "t0-0", |
| | | _vm._s(_vm.infoText.sourceLocNo) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 98, |
| | | 97, |
| | | "t0-0", |
| | | _vm._s(_vm.infoText.staNo) |
| | | ) |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(99, "sc", "swiper-body"), |
| | | attrs: { _i: 99 }, |
| | | staticClass: _vm._$s(98, "sc", "swiper-body"), |
| | | attrs: { _i: 98 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "swiper", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 100, |
| | | 99, |
| | | "sc", |
| | | "swiper-body-main" |
| | | ), |
| | | attrs: { _i: 100 }, |
| | | attrs: { _i: 99 }, |
| | | }, |
| | | _vm._l( |
| | | _vm._$s(101, "f", { |
| | | _vm._$s(100, "f", { |
| | | forItems: _vm.swiperList, |
| | | }), |
| | | function (item, i, $21, $31) { |
| | | return _c( |
| | | "swiper-item", |
| | | { |
| | | key: _vm._$s(101, "f", { |
| | | key: _vm._$s(100, "f", { |
| | | forIndex: $21, |
| | | key: i, |
| | | }), |
| | | staticClass: _vm._$s( |
| | | "101-" + $31, |
| | | "100-" + $31, |
| | | "sc", |
| | | "swiper-item" |
| | | ), |
| | | attrs: { _i: "101-" + $31 }, |
| | | attrs: { _i: "100-" + $31 }, |
| | | }, |
| | | [ |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "102-" + $31, |
| | | "101-" + $31, |
| | | "t0-0", |
| | | _vm._s(i + 1) |
| | | ) + |
| | | _vm._$s( |
| | | "102-" + $31, |
| | | "101-" + $31, |
| | | "t0-1", |
| | | _vm._s(_vm.swiperList.length) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "103-" + $31, |
| | | "102-" + $31, |
| | | "t0-0", |
| | | _vm._s(item.matnr) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "104-" + $31, |
| | | "103-" + $31, |
| | | "t0-0", |
| | | _vm._s(item.maknx) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "105-" + $31, |
| | | "104-" + $31, |
| | | "t0-0", |
| | | _vm._s(item.specs) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "106-" + $31, |
| | | "105-" + $31, |
| | | "t0-0", |
| | | _vm._s(item.batch) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "107-" + $31, |
| | | "106-" + $31, |
| | | "t0-0", |
| | | _vm._s(item.orderNo) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "108-" + $31, |
| | | "107-" + $31, |
| | | "t0-0", |
| | | _vm._s(item.customer) |
| | | ) |
| | |
| | | _c("view", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "109-" + $31, |
| | | "108-" + $31, |
| | | "t0-0", |
| | | _vm._s(item.count) |
| | | ) |
| | |
| | | duration: _vm.duration, |
| | | "mode-class": _vm.errorInfoMode, |
| | | show: _vm.errorInfoViewShow, |
| | | _i: 110, |
| | | _i: 109, |
| | | }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(111, "sc", "error-info-view"), |
| | | attrs: { _i: 111 }, |
| | | staticClass: _vm._$s(110, "sc", "error-info-view"), |
| | | attrs: { _i: 110 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { staticClass: _vm._$s(112, "sc", "head"), attrs: { _i: 112 } }, |
| | | { staticClass: _vm._$s(111, "sc", "head"), attrs: { _i: 111 } }, |
| | | [ |
| | | _c("text", [ |
| | | _vm._v(_vm._$s(113, "t0-0", _vm._s(_vm.infoText.title))), |
| | | _vm._v(_vm._$s(112, "t0-0", _vm._s(_vm.infoText.title))), |
| | | ]), |
| | | ] |
| | | ), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(114, "sc", "time-tools"), |
| | | attrs: { _i: 114 }, |
| | | staticClass: _vm._$s(113, "sc", "time-tools"), |
| | | attrs: { _i: 113 }, |
| | | }, |
| | | [_vm._v(_vm._$s(114, "t0-0", _vm._s(_vm.calendar)))] |
| | | [_vm._v(_vm._$s(113, "t0-0", _vm._s(_vm.calendar)))] |
| | | ), |
| | | _c("view", { |
| | | staticClass: _vm._$s(115, "sc", "button-left"), |
| | | attrs: { _i: 115 }, |
| | | staticClass: _vm._$s(114, "sc", "button-left"), |
| | | attrs: { _i: 114 }, |
| | | }), |
| | | _c("view", { |
| | | staticClass: _vm._$s(116, "sc", "button-right"), |
| | | attrs: { _i: 116 }, |
| | | staticClass: _vm._$s(115, "sc", "button-right"), |
| | | attrs: { _i: 115 }, |
| | | }), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(117, "sc", "info-main"), |
| | | attrs: { _i: 117 }, |
| | | staticClass: _vm._$s(116, "sc", "info-main"), |
| | | attrs: { _i: 116 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(118, "sc", "info-box"), |
| | | attrs: { _i: 118 }, |
| | | staticClass: _vm._$s(117, "sc", "info-box"), |
| | | attrs: { _i: 117 }, |
| | | }, |
| | | [ |
| | | _c("y-box", { attrs: { _i: 119 } }, [ |
| | | _c("y-box", { attrs: { _i: 118 } }, [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(120, "sc", "info-box-text"), |
| | | attrs: { _i: 120 }, |
| | | staticClass: _vm._$s(119, "sc", "info-box-text"), |
| | | attrs: { _i: 119 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | 121, |
| | | 120, |
| | | "sc", |
| | | "flex-col info-box-text-item" |
| | | ), |
| | | attrs: { _i: 121 }, |
| | | attrs: { _i: 120 }, |
| | | }, |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 121, |
| | | 120, |
| | | "t0-0", |
| | | _vm._s(_vm.infoText.error) |
| | | ) |
| | |
| | | { |
| | | name: "show", |
| | | rawName: "v-show", |
| | | value: _vm._$s(122, "v-show", _vm.ejectShow), |
| | | expression: "_$s(122,'v-show',ejectShow)", |
| | | value: _vm._$s(121, "v-show", _vm.ejectShow), |
| | | expression: "_$s(121,'v-show',ejectShow)", |
| | | }, |
| | | ], |
| | | staticClass: _vm._$s(122, "sc", "eject-mask"), |
| | | attrs: { _i: 122 }, |
| | | staticClass: _vm._$s(121, "sc", "eject-mask"), |
| | | attrs: { _i: 121 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { staticClass: _vm._$s(123, "sc", "eject"), attrs: { _i: 123 } }, |
| | | { staticClass: _vm._$s(122, "sc", "eject"), attrs: { _i: 122 } }, |
| | | [ |
| | | _c("view", { |
| | | staticClass: _vm._$s(124, "sc", "eject-title"), |
| | | attrs: { _i: 124 }, |
| | | staticClass: _vm._$s(123, "sc", "eject-title"), |
| | | attrs: { _i: 123 }, |
| | | }), |
| | | _c( |
| | | "scroll-view", |
| | | { |
| | | staticClass: _vm._$s(125, "sc", "eject-input"), |
| | | attrs: { _i: 125 }, |
| | | staticClass: _vm._$s(124, "sc", "eject-input"), |
| | | attrs: { _i: 124 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(126, "sc", "item"), |
| | | attrs: { _i: 126 }, |
| | | staticClass: _vm._$s(125, "sc", "item"), |
| | | attrs: { _i: 125 }, |
| | | }, |
| | | [ |
| | | _c("view", { |
| | | staticClass: _vm._$s(127, "sc", "desc"), |
| | | attrs: { _i: 127 }, |
| | | staticClass: _vm._$s(126, "sc", "desc"), |
| | | attrs: { _i: 126 }, |
| | | }), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(128, "sc", "input"), |
| | | attrs: { _i: 128 }, |
| | | staticClass: _vm._$s(127, "sc", "input"), |
| | | attrs: { _i: 127 }, |
| | | }, |
| | | [ |
| | | _c("input", { |
| | |
| | | expression: "baseIP", |
| | | }, |
| | | ], |
| | | attrs: { _i: 129 }, |
| | | attrs: { _i: 128 }, |
| | | domProps: { |
| | | value: _vm._$s(129, "v-model", _vm.baseIP), |
| | | value: _vm._$s(128, "v-model", _vm.baseIP), |
| | | }, |
| | | on: { |
| | | input: function ($event) { |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(130, "sc", "item"), |
| | | attrs: { _i: 130 }, |
| | | staticClass: _vm._$s(129, "sc", "item"), |
| | | attrs: { _i: 129 }, |
| | | }, |
| | | [ |
| | | _c("view", { |
| | | staticClass: _vm._$s(131, "sc", "desc"), |
| | | attrs: { _i: 131 }, |
| | | staticClass: _vm._$s(130, "sc", "desc"), |
| | | attrs: { _i: 130 }, |
| | | }), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(132, "sc", "input"), |
| | | attrs: { _i: 132 }, |
| | | staticClass: _vm._$s(131, "sc", "input"), |
| | | attrs: { _i: 131 }, |
| | | }, |
| | | [ |
| | | _c("input", { |
| | |
| | | expression: "basePort", |
| | | }, |
| | | ], |
| | | attrs: { _i: 133 }, |
| | | attrs: { _i: 132 }, |
| | | domProps: { |
| | | value: _vm._$s(133, "v-model", _vm.basePort), |
| | | value: _vm._$s(132, "v-model", _vm.basePort), |
| | | }, |
| | | on: { |
| | | input: function ($event) { |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(134, "sc", "item"), |
| | | attrs: { _i: 134 }, |
| | | staticClass: _vm._$s(133, "sc", "item"), |
| | | attrs: { _i: 133 }, |
| | | }, |
| | | [ |
| | | _c("view", { |
| | | staticClass: _vm._$s(135, "sc", "desc"), |
| | | attrs: { _i: 135 }, |
| | | staticClass: _vm._$s(134, "sc", "desc"), |
| | | attrs: { _i: 134 }, |
| | | }), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(136, "sc", "input"), |
| | | attrs: { _i: 136 }, |
| | | staticClass: _vm._$s(135, "sc", "input"), |
| | | attrs: { _i: 135 }, |
| | | }, |
| | | [ |
| | | _c("input", { |
| | |
| | | expression: "baseUrl", |
| | | }, |
| | | ], |
| | | attrs: { _i: 137 }, |
| | | attrs: { _i: 136 }, |
| | | domProps: { |
| | | value: _vm._$s(137, "v-model", _vm.baseUrl), |
| | | value: _vm._$s(136, "v-model", _vm.baseUrl), |
| | | }, |
| | | on: { |
| | | input: function ($event) { |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(138, "sc", "item"), |
| | | attrs: { _i: 138 }, |
| | | staticClass: _vm._$s(137, "sc", "item"), |
| | | attrs: { _i: 137 }, |
| | | }, |
| | | [ |
| | | _c("view", { |
| | | staticClass: _vm._$s(139, "sc", "desc"), |
| | | attrs: { _i: 139 }, |
| | | staticClass: _vm._$s(138, "sc", "desc"), |
| | | attrs: { _i: 138 }, |
| | | }), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(140, "sc", "input"), |
| | | attrs: { _i: 140 }, |
| | | staticClass: _vm._$s(139, "sc", "input"), |
| | | attrs: { _i: 139 }, |
| | | }, |
| | | [ |
| | | _c("input", { |
| | |
| | | expression: "wmsPort", |
| | | }, |
| | | ], |
| | | attrs: { _i: 141 }, |
| | | attrs: { _i: 140 }, |
| | | domProps: { |
| | | value: _vm._$s(141, "v-model", _vm.wmsPort), |
| | | value: _vm._$s(140, "v-model", _vm.wmsPort), |
| | | }, |
| | | on: { |
| | | input: function ($event) { |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(142, "sc", "item"), |
| | | attrs: { _i: 142 }, |
| | | staticClass: _vm._$s(141, "sc", "item"), |
| | | attrs: { _i: 141 }, |
| | | }, |
| | | [ |
| | | _c("view", { |
| | | staticClass: _vm._$s(143, "sc", "desc"), |
| | | attrs: { _i: 143 }, |
| | | staticClass: _vm._$s(142, "sc", "desc"), |
| | | attrs: { _i: 142 }, |
| | | }), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(144, "sc", "input"), |
| | | attrs: { _i: 144 }, |
| | | staticClass: _vm._$s(143, "sc", "input"), |
| | | attrs: { _i: 143 }, |
| | | }, |
| | | [ |
| | | _c("input", { |
| | |
| | | expression: "wmsUrl", |
| | | }, |
| | | ], |
| | | attrs: { _i: 145 }, |
| | | attrs: { _i: 144 }, |
| | | domProps: { |
| | | value: _vm._$s(145, "v-model", _vm.wmsUrl), |
| | | value: _vm._$s(144, "v-model", _vm.wmsUrl), |
| | | }, |
| | | on: { |
| | | input: function ($event) { |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(146, "sc", "item"), |
| | | attrs: { _i: 146 }, |
| | | staticClass: _vm._$s(145, "sc", "item"), |
| | | attrs: { _i: 145 }, |
| | | }, |
| | | [ |
| | | _c("view", { |
| | | staticClass: _vm._$s(147, "sc", "desc"), |
| | | attrs: { _i: 147 }, |
| | | staticClass: _vm._$s(146, "sc", "desc"), |
| | | attrs: { _i: 146 }, |
| | | }), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(148, "sc", "input"), |
| | | attrs: { _i: 148 }, |
| | | staticClass: _vm._$s(147, "sc", "input"), |
| | | attrs: { _i: 147 }, |
| | | }, |
| | | [ |
| | | _c("input", { |
| | |
| | | expression: "baseLedId", |
| | | }, |
| | | ], |
| | | attrs: { _i: 149 }, |
| | | attrs: { _i: 148 }, |
| | | domProps: { |
| | | value: _vm._$s(149, "v-model", _vm.baseLedId), |
| | | value: _vm._$s(148, "v-model", _vm.baseLedId), |
| | | }, |
| | | on: { |
| | | input: function ($event) { |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(150, "sc", "eject-button"), |
| | | attrs: { _i: 150 }, |
| | | staticClass: _vm._$s(149, "sc", "eject-button"), |
| | | attrs: { _i: 149 }, |
| | | }, |
| | | [ |
| | | _c("view", { |
| | | staticClass: _vm._$s(151, "sc", "button-item"), |
| | | attrs: { _i: 151 }, |
| | | staticClass: _vm._$s(150, "sc", "button-item"), |
| | | attrs: { _i: 150 }, |
| | | on: { click: _vm.ejectClose }, |
| | | }), |
| | | _c("view", { |
| | | staticClass: _vm._$s(152, "sc", "button-item"), |
| | | attrs: { _i: 152 }, |
| | | staticClass: _vm._$s(151, "sc", "button-item"), |
| | | attrs: { _i: 151 }, |
| | | on: { click: _vm.ejectConfirm }, |
| | | }), |
| | | ] |
| | |
| | | [ |
| | | _c( |
| | | "uni-popup", |
| | | { ref: "upVersion", attrs: { type: "dialog", _i: 154 } }, |
| | | { ref: "upVersion", attrs: { type: "dialog", _i: 153 } }, |
| | | [ |
| | | _c("uni-popup-dialog", { |
| | | attrs: { |
| | | type: _vm.msgType, |
| | | title: "通知", |
| | | content: _vm.dialogContent, |
| | | _i: 155, |
| | | _i: 154, |
| | | }, |
| | | on: { confirm: _vm.dialogConfirm, close: _vm.dialogClose }, |
| | | }), |
| | |
| | | { |
| | | name: "show", |
| | | rawName: "v-show", |
| | | value: _vm._$s(156, "v-show", _vm.timeOut), |
| | | expression: "_$s(156,'v-show',timeOut)", |
| | | value: _vm._$s(155, "v-show", _vm.timeOut), |
| | | expression: "_$s(155,'v-show',timeOut)", |
| | | }, |
| | | ], |
| | | attrs: { _i: 156 }, |
| | | attrs: { _i: 155 }, |
| | | }, |
| | | [_vm._v(_vm._$s(156, "t0-0", _vm._s(_vm.times)))] |
| | | [_vm._v(_vm._$s(155, "t0-0", _vm._s(_vm.times)))] |
| | | ), |
| | | ], |
| | | 1 |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 118));\nvar _uniWebSocket = _interopRequireDefault(__webpack_require__(/*! ./uniWebSocket */ 119));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar socket;\nvar _default = {\n data: function data() {\n return {\n series: [],\n homeViewShow: true,\n infoViewShow: false,\n errorInfoViewShow: false,\n homeMode: [],\n infoMode: [],\n errorInfoMode: [],\n needUpdateCharts: false,\n viewSwitchTimer: null,\n // 视图切换定时器\n viewSwitchInProgress: false,\n // 添加这一行来跟踪视图切换状态\n timerIds: [],\n // 存储定时器ID\n baseInfo: {\n xDistance: 1,\n yDistance: 2,\n xDuration: 3,\n yDuration: 4,\n usedPr: 50,\n used: 3537,\n stockCount: '',\n emptyCount: '',\n noneCount: ''\n },\n chartsData: {\n \"Line\": {\n \"categories\": [],\n \"series\": []\n },\n \"Pie\": {\n \"series\": [{\n \"data\": []\n }]\n }\n },\n duration: 1000,\n calendar: '',\n ringOpts: {},\n chartsDataLine1: {},\n chartsDataPie2: {},\n fontSize: '',\n height: '',\n showCharts: false,\n ejectShow: false,\n baseIP: '',\n basePort: '',\n baseLedId: '',\n baseCrnId: '',\n baseUrl: '',\n info: null,\n error: null,\n infoType: 0,\n text: '',\n infoText: {\n title: '',\n staNo: \"\",\n matnr: \"\",\n maknx: \"\",\n specs: \"\",\n count: \"\",\n error: \"\",\n barcode: \"\"\n },\n swiperList: [],\n timeOut: false,\n times: 0,\n currDate: '',\n locList: [],\n oldHours: '',\n oldMin: '',\n socketClient: null,\n messages: [],\n version: '',\n socketUrl: '',\n msgType: 'success',\n filename: '',\n dialogContent: '',\n wmsUrl: '',\n wmsPort: ''\n };\n },\n onShow: function onShow() {\n // 隐藏时间,电量,信号等\n\n plus.navigator.setFullscreen(true);\n this.getVersion();\n },\n mounted: function mounted() {\n var that = this;\n var BaseIP = uni.getStorageSync('BaseIp');\n var BaseLedId = uni.getStorageSync('BaseLedId');\n var BasePort = uni.getStorageSync('BasePort');\n var BaseCrnId = uni.getStorageSync('BaseCrnId');\n var PROJ = uni.getStorageSync('UPROJ');\n var WMSURL = uni.getStorageSync('wmsUrl');\n var WMSPORT = uni.getStorageSync('wmsPort');\n that.baseUrl = PROJ;\n that.baseIP = BaseIP;\n that.baseLedId = BaseLedId;\n that.basePort = BasePort;\n that.baseCrnId = BaseCrnId;\n that.wmsUrl = WMSURL;\n that.wmsPort = WMSPORT;\n // this.getUrl()\n },\n created: function created() {\n var that = this;\n var BaseIP = uni.getStorageSync('BaseIp');\n var BaseLedId = uni.getStorageSync('BaseLedId');\n var BasePort = uni.getStorageSync('BasePort');\n var BaseCrnId = uni.getStorageSync('BaseCrnId');\n var PROJ = uni.getStorageSync('UPROJ');\n var WMSURL = uni.getStorageSync('wmsUrl');\n var WMSPORT = uni.getStorageSync('wmsPort');\n that.baseUrl = PROJ;\n that.baseIP = BaseIP;\n that.baseLedId = BaseLedId;\n that.basePort = BasePort;\n that.baseCrnId = BaseCrnId;\n that.wmsUrl = WMSURL;\n that.wmsPort = WMSPORT;\n that.uniWebSocket();\n // that.webSockerInit()\n },\n onLoad: function onLoad() {\n var _this = this;\n // 存储定时器ID以便后续清理\n var timerId1 = setInterval(function () {\n _this.getServerData();\n // this.initlineChart()\n // this.initPieChart()\n // this.getOther()\n // // this.getDate()\n // this.getDate2()\n // this.getInfo()\n // this.getError()\n // this.getInfo2()\n // this.getError2()\n // this.getUrl()\n _this.controller();\n // this.statisticalModel()\n // 测试用\n }, 1000);\n this.timerIds.push(timerId1);\n var timerId2 = setInterval(function () {\n setTimeout(function () {\n plus.runtime.restart();\n }, 100);\n }, 1000 * 60 * 60 * 4);\n this.timerIds.push(timerId2);\n setInterval(function () {\n plus.android.importClass('android.os.Debug');\n var mem = plus.android.invoke('android.os.Debug', 'getNativeHeapAllocatedSize') / 1048576;\n __f__(\"log\", mem.toFixed(1), \" at pages/home/home.vue:487\");\n }, 2000);\n },\n onUnload: function onUnload() {\n // 清理所有定时器\n this.timerIds.forEach(function (id) {\n return clearInterval(id);\n });\n this.timerIds = [];\n },\n beforeDestroy: function beforeDestroy() {\n // 清理WebSocket连接\n if (this.socketClient) {\n this.socketClient.close();\n this.socketClient = null;\n }\n\n // 清理所有定时器\n this.timerIds.forEach(function (id) {\n return clearInterval(id);\n });\n this.timerIds = [];\n\n // 清理视图切换定时器\n if (this.viewSwitchTimer) {\n clearTimeout(this.viewSwitchTimer);\n this.viewSwitchTimer = null;\n }\n },\n methods: {\n uniWebSocket: function uniWebSocket() {\n var that = this;\n that.commonUrl = that.baseIP + ':' + that.basePort + \"/\" + that.baseUrl;\n that.socketUrl = \"ws://\" + that.commonUrl + \"/led/\" + that.baseLedId;\n // 创建WebSocket实例\n that.socketClient = new _uniWebSocket.default(that.socketUrl, {\n // 心跳间隔,默认30秒\n heartbeatInterval: 30000,\n // 重连间隔,默认3秒\n reconnectInterval: 3000,\n // 最大重连次数,-1表示无限重连\n maxReconnectAttempts: -1,\n // 消息回调\n onMessage: function onMessage(res) {\n try {\n var data = JSON.parse(res.data);\n that.showDate(data);\n // 处理消息...\n } catch (e) {\n __f__(\"error\", '解析消息失败', e, \" at pages/home/home.vue:534\");\n }\n },\n // 连接打开回调\n onOpen: function onOpen(res) {\n that.timeOut = false;\n that.times = 0;\n __f__(\"log\", 'WebSocket已连接', res, \" at pages/home/home.vue:541\");\n },\n // 连接错误回调\n onError: function onError(error) {\n __f__(\"error\", 'WebSocket错误', error, \" at pages/home/home.vue:545\");\n },\n // 连接关闭回调\n onClose: function onClose(res) {\n that.timeOut = true;\n that.times = that.times + 1;\n that.infoType = 0;\n __f__(\"log\", 'WebSocket已关闭', res, \" at pages/home/home.vue:552\");\n },\n // 重连回调\n onReconnect: function onReconnect(info) {\n __f__(\"log\", \"WebSocket\\u91CD\\u8FDE(\".concat(info.attempts, \"/\").concat(info.maxAttempts, \")\"), \" at pages/home/home.vue:556\");\n }\n });\n\n // 建立连接\n that.socketClient.connect();\n },\n // 发送消息\n sendMessage: function sendMessage(content) {\n var message = {\n type: 'chat',\n content: content,\n timestamp: Date.now()\n };\n this.socketClient.send(message).then(function () {\n __f__(\"log\", '消息发送成功', \" at pages/home/home.vue:573\");\n }).catch(function (error) {\n __f__(\"error\", '消息发送失败', error, \" at pages/home/home.vue:576\");\n });\n },\n webSockerInit: function webSockerInit() {\n var that = this;\n if (that.baseIP === '' && that.basePort === '' && that.baseUrl === '') {\n that.timeOut = true;\n that.times = that.times + 1;\n that.infoType = 0;\n return;\n }\n that.commonUrl = that.baseIP + ':' + that.basePort + \"/\" + that.baseUrl;\n var socketUrl = \"ws://\" + that.commonUrl + \"/led/\" + that.baseLedId;\n // socketUrl = \"ws://10.0.100.150:8080/gtctu/led/113\"\n var ws = new WebSocketClient(socketUrl);\n ws.connect();\n __f__(\"log\", ws, \" at pages/home/home.vue:595\");\n ws.onclose(function () {});\n ws.onmessage(function (msg) {\n that.timeOut = false;\n var data = JSON.parse(msg.data);\n that.showDate(data);\n });\n },\n showDate: function showDate(data) {\n var that = this;\n if (data.type === \"default\") {\n // 设置标记,表示数据已更新,需要重新渲染图表\n that.needUpdateCharts = true;\n that.chartsData.Pie.series[0].data = data.pie;\n that.baseInfo.stockCount = data.stockCunt;\n that.baseInfo.emptyCount = data.emptyCount;\n that.baseInfo.noneCount = data.noneCount;\n that.baseInfo.used = data.used;\n that.baseInfo.usedPr = data.usedPr;\n that.chartsData.Line.categories = [that.getDateFormat(-11), that.getDateFormat(-10), that.getDateFormat(-9), that.getDateFormat(-8), that.getDateFormat(-7), that.getDateFormat(-6), that.getDateFormat(-5), that.getDateFormat(-4), that.getDateFormat(-3), that.getDateFormat(-2), that.getDateFormat(-1), that.getDateFormat(0)];\n that.chartsData.Line.series = data.rows;\n that.calendar = data.year + \"年\" + data.month + \"月\" + data.day + \"日 \" + data.hour + \":\" + data.minute + \":\" + data.second + \" \" + data.week;\n that.currDate = data.year + \"/\" + data.month + \"/\" + data.day;\n that.locList = data.inventoryData;\n that.oldHours = data.hour;\n that.oldMin = data.minute;\n } else if (data.type === \"error\") {\n if (data.errMsg && data.errMsg !== \"\") {\n var errorInfo = data.errMsg;\n if (that.infoType == 1) {\n that.infoType = 3;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n return;\n }\n that.infoType = 2;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n } else {\n if (that.infoType == 1) {\n return;\n }\n that.infoType = 0;\n }\n } else if (data.type === \"task\") {\n if (data.taskList && data.taskList !== \"\" && data.taskList.length != 0) {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n // infoType1:只有拣料等信息\n that.infoType = 1;\n if (data.taskList[0].ioType === 101) {\n that.infoText.title = '全板出库';\n } else if (data.taskList[0].ioType === 103) {\n that.infoText.title = '拣料出库';\n } else if (data.taskList[0].ioType === 107) {\n that.infoText.title = '盘点出库';\n } else if (data.taskList[0].ioType === 1) {\n that.infoText.title = '入库';\n } else if (data.taskList[0].ioType === 10) {\n that.infoText.title = '空托入库';\n } else if (data.taskList[0].ioType === 110) {\n that.infoText.title = '空托出库';\n } else if (data.taskList[0].ioType === 104) {\n that.infoText.title = '并板出库';\n } else if (data.taskList[0].ioType === 54) {\n that.infoText.title = '并板入库';\n }\n that.infoText.barcode = data.taskList[0].barcode;\n that.infoText.workNo = data.taskList[0].workNo;\n that.infoText.sourceLocNo = data.taskList[0].sourceLocNo;\n that.infoText.staNo = data.taskList[0].staNo;\n that.swiperList = data.taskList[0].matDtos;\n // that.infoText.matnr = res.data[0].matDtos[0].matnr\n // that.infoText.specs = res.data[0].matDtos[0].specs\n // that.infoText.maknx = res.data[0].matDtos[0].maknx\n // that.infoText.count = res.data[0].matDtos[0].count\n } else {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n that.infoType = 0;\n }\n }\n },\n statisticalModel: function statisticalModel() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/locDetl/pda/statisticalModel\",\n method: 'GET',\n success: function success(result) {\n var res = result.data;\n if (res.code === 200) {\n __f__(\"log\", res.data, \" at pages/home/home.vue:700\");\n that.locList = res.data;\n }\n }\n });\n },\n getUrl: function getUrl() {\n this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + \"/\" + this.baseUrl;\n },\n getServerData: function getServerData() {\n // 只在数据变化时才进行深拷贝\n if (this.needUpdateCharts) {\n this.chartsDataLine1 = JSON.parse(JSON.stringify(this.chartsData.Line));\n this.chartsDataPie2 = JSON.parse(JSON.stringify(this.chartsData.Pie));\n this.needUpdateCharts = false;\n }\n },\n // 获取错误信息\n getInfo2: function getInfo2() {\n var that = this;\n var result = _data.default.dataInfo2;\n var res = result.data;\n if (res.data && res.data !== \"\") {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n // infoType1:只有拣料等信息\n that.infoType = 1;\n if (res.data[0].ioType === 101) {\n that.infoText.title = '全板出库';\n } else if (res.data[0].ioType === 103) {\n that.infoText.title = '检料出库';\n } else if (res.data[0].ioType === 107) {\n that.infoText.title = '盘点出库';\n } else if (res.data[0].ioType === 1) {\n that.infoText.title = '入库';\n } else if (res.data[0].ioType === 10) {\n that.infoText.title = '空托入库';\n } else if (res.data[0].ioType === 110) {\n that.infoText.title = '空托出库';\n }\n that.infoText.barcode = res.data[0].barcode;\n that.infoText.workNo = res.data[0].workNo;\n that.infoText.sourceLocNo = res.data[0].sourceLocNo;\n that.infoText.staNo = res.data[0].staNo;\n that.swiperList = res.data[0].matDtos;\n // that.infoText.matnr = res.data[0].matDtos[0].matnr\n // that.infoText.specs = res.data[0].matDtos[0].specs\n // that.infoText.maknx = res.data[0].matDtos[0].maknx\n // that.infoText.count = res.data[0].matDtos[0].count\n } else {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n that.infoType = 0;\n }\n },\n getError2: function getError2() {\n var that = this;\n var result = _data.default.dataError2;\n var res = result.data;\n if (res.data && res.data !== \"\") {\n var errorInfo = res.data;\n if (that.infoType == 1) {\n that.infoType = 3;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n return;\n }\n that.infoType = 2;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n } else {\n if (that.infoType == 1) {\n return;\n }\n that.infoType = 0;\n }\n },\n getInfo: function getInfo() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/led\",\n method: \"GET\",\n data: {\n ledId: that.baseLedId\n },\n success: function success(result) {\n that.timeOut = false;\n that.times = 0;\n var res = result.data;\n if (res.data && res.data !== \"\") {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n // infoType1:只有拣料等信息\n that.infoType = 1;\n if (res.data[0].ioType === 101) {\n that.infoText.title = '全板出库';\n } else if (res.data[0].ioType === 103) {\n that.infoText.title = '检料出库';\n } else if (res.data[0].ioType === 107) {\n that.infoText.title = '盘点出库';\n } else if (res.data[0].ioType === 1) {\n that.infoText.title = '入库';\n } else if (res.data[0].ioType === 10) {\n that.infoText.title = '空托入库';\n } else if (res.data[0].ioType === 110) {\n that.infoText.title = '空托出库';\n }\n that.infoText.barcode = res.data[0].barcode;\n that.infoText.workNo = res.data[0].workNo;\n that.infoText.sourceLocNo = res.data[0].sourceLocNo;\n that.infoText.staNo = res.data[0].staNo;\n that.swiperList = res.data[0].matDtos;\n // that.infoText.matnr = res.data[0].matDtos[0].matnr\n // that.infoText.specs = res.data[0].matDtos[0].specs\n // that.infoText.maknx = res.data[0].matDtos[0].maknx\n // that.infoText.count = res.data[0].matDtos[0].count\n } else {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n that.infoType = 0;\n }\n },\n fail: function fail(err) {\n that.timeOut = true;\n that.times = that.times + 1;\n that.infoType = 0;\n }\n });\n },\n getError: function getError() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/led/error\",\n data: {\n ledId: that.baseLedId\n },\n method: \"GET\",\n success: function success(result) {\n that.timeOut = false;\n that.times = 0;\n var res = result.data;\n if (res.data && res.data !== \"\") {\n var errorInfo = res.data;\n if (that.infoType == 1) {\n that.infoType = 3;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n return;\n }\n that.infoType = 2;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n } else {\n if (that.infoType == 1) {\n return;\n }\n that.infoType = 0;\n }\n },\n fail: function fail(err) {\n that.timeOut = true;\n that.infoType = 0;\n }\n });\n },\n // 控制器\n controller: function controller() {\n var _this2 = this;\n // 如果视图切换正在进行中,不要中断\n if (this.viewSwitchInProgress) {\n return;\n }\n\n // 清除之前的视图切换定时器\n if (this.viewSwitchTimer) {\n clearTimeout(this.viewSwitchTimer);\n this.viewSwitchTimer = null;\n }\n switch (this.infoType) {\n // 有信息 但 没有错误信息\n case 0:\n if (this.errorInfoViewShow) {\n this.viewSwitchInProgress = true;\n this.errorInfoViewShow = false;\n this.errorInfoMode = ['fade', 'slide-bottom'];\n this.viewSwitchTimer = setTimeout(function () {\n _this2.homeViewShow = true;\n _this2.homeMode = ['fade', 'slide-bottom'];\n // 设置另一个定时器来重置进行中标志\n setTimeout(function () {\n _this2.viewSwitchInProgress = false;\n }, 1000);\n }, 1000);\n } else if (this.infoViewShow) {\n this.viewSwitchInProgress = true;\n this.infoViewShow = false;\n this.infoMode = ['fade', 'slide-bottom'];\n this.viewSwitchTimer = setTimeout(function () {\n _this2.homeViewShow = true;\n _this2.homeMode = ['fade', 'slide-bottom'];\n // 设置另一个定时器来重置进行中标志\n setTimeout(function () {\n _this2.viewSwitchInProgress = false;\n }, 1000);\n }, 1000);\n } else if (this.errorInfoViewShow && this.infoViewShow) {\n this.viewSwitchInProgress = true;\n this.errorInfoViewShow = false;\n this.infoViewShow = false;\n this.infoMode = ['fade', 'slide-bottom'];\n this.viewSwitchTimer = setTimeout(function () {\n _this2.homeViewShow = true;\n _this2.homeMode = ['fade', 'slide-bottom'];\n // 设置另一个定时器来重置进行中标志\n setTimeout(function () {\n _this2.viewSwitchInProgress = false;\n }, 1000);\n }, 1000);\n }\n return;\n case 1:\n if (this.homeViewShow) {\n this.viewSwitchInProgress = true;\n this.homeViewShow = false;\n this.homeMode = ['fade', 'slide-bottom'];\n this.viewSwitchTimer = setTimeout(function () {\n _this2.infoViewShow = true;\n _this2.infoMode = ['fade', 'slide-bottom'];\n // 设置另一个定时器来重置进行中标志\n setTimeout(function () {\n _this2.viewSwitchInProgress = false;\n }, 1000);\n }, 1000);\n } else if (this.errorInfoViewShow) {\n this.viewSwitchInProgress = true;\n this.errorInfoViewShow = false;\n this.errorInfoMode = ['fade', 'slide-bottom'];\n this.viewSwitchTimer = setTimeout(function () {\n _this2.infoViewShow = true;\n _this2.infoMode = ['fade', 'slide-bottom'];\n // 设置另一个定时器来重置进行中标志\n setTimeout(function () {\n _this2.viewSwitchInProgress = false;\n }, 1000);\n }, 1000);\n }\n return;\n // 有信息 且 有错误信息\n case 2:\n if (this.homeViewShow) {\n this.viewSwitchInProgress = true;\n this.homeViewShow = false;\n this.homeMode = ['fade', 'slide-bottom'];\n this.viewSwitchTimer = setTimeout(function () {\n _this2.errorInfoViewShow = true;\n _this2.errorInfoMode = ['fade', 'slide-bottom'];\n // 设置另一个定时器来重置进行中标志\n setTimeout(function () {\n _this2.viewSwitchInProgress = false;\n }, 1000);\n }, 1000);\n } else if (this.infoViewShow) {\n this.viewSwitchInProgress = true;\n this.infoViewShow = false;\n this.infoMode = ['fade', 'slide-bottom'];\n this.viewSwitchTimer = setTimeout(function () {\n _this2.errorInfoViewShow = true;\n _this2.errorInfoMode = ['fade', 'slide-bottom'];\n // 设置另一个定时器来重置进行中标志\n setTimeout(function () {\n _this2.viewSwitchInProgress = false;\n }, 1000);\n }, 1000);\n }\n return;\n // 有信息 且 有错误信息\n case 3:\n if (this.homeViewShow) {\n this.viewSwitchInProgress = true;\n this.homeViewShow = false;\n this.homeMode = ['fade', 'slide-bottom'];\n this.viewSwitchTimer = setTimeout(function () {\n _this2.errorInfoViewShow = true;\n _this2.errorInfoMode = ['fade', 'slide-bottom'];\n // 设置另一个定时器来重置进行中标志\n setTimeout(function () {\n _this2.viewSwitchInProgress = false;\n }, 1000);\n }, 1000);\n } else if (this.infoViewShow) {\n this.viewSwitchInProgress = true;\n this.infoViewShow = false;\n this.infoMode = ['fade', 'slide-bottom'];\n this.viewSwitchTimer = setTimeout(function () {\n _this2.errorInfoViewShow = true;\n _this2.errorInfoMode = ['fade', 'slide-bottom'];\n // 设置另一个定时器来重置进行中标志\n setTimeout(function () {\n _this2.viewSwitchInProgress = false;\n }, 1000);\n }, 1000);\n }\n return;\n }\n },\n // 主屏幕\n handle: function handle(type) {\n this.homeViewShow = !this.homeViewShow;\n this.modeClass = type;\n },\n // 拣料\n handle1: function handle1(type) {\n this.infoViewShow = !this.infoViewShow;\n this.modeClass = type;\n },\n // 异常\n handle2: function handle2(type) {\n this.errorInfoViewShow = !this.errorInfoViewShow;\n this.modeClass = type;\n },\n // 配置\n ejected: function ejected() {\n this.ejectShow = true;\n },\n // 取消配置\n ejectClose: function ejectClose() {\n this.ejectShow = false;\n },\n // 确认配置\n ejectConfirm: function ejectConfirm() {\n uni.setStorageSync('BaseIp', this.baseIP);\n uni.setStorageSync('BaseLedId', this.baseLedId);\n uni.setStorageSync('BasePort', this.basePort);\n uni.setStorageSync('BaseCrnId', this.baseCrnId);\n uni.setStorageSync('UPROJ', this.baseUrl);\n uni.setStorageSync('wmsUrl', this.wmsUrl);\n uni.setStorageSync('wmsPort', this.wmsPort);\n this.getUrl();\n this.ejectShow = false;\n },\n // 日历 服务器\n getDate2: function getDate2() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/date\",\n method: \"GET\",\n success: function success(result) {\n var res = result.data.data;\n }\n });\n },\n // 日历\n getDate: function getDate() {\n var dt = new Date();\n var year, month, day, hours, minutes, seconds, weeks;\n year = dt.getFullYear();\n month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;\n day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();\n hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();\n minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();\n seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();\n weeks = dt.getDay();\n switch (weeks) {\n case 0:\n weeks = \"星期日\";\n break;\n case 1:\n weeks = \"星期一\";\n break;\n case 2:\n weeks = \"星期二\";\n break;\n case 3:\n weeks = \"星期三\";\n break;\n case 4:\n weeks = \"星期四\";\n break;\n case 5:\n weeks = \"星期五\";\n break;\n default:\n weeks = \"星期六\";\n }\n this.calendar = year + \"年\" + month + \"月\" + day + \"日 \" + hours + \":\" + minutes + \":\" + seconds + \" \" + weeks;\n },\n getDateFormat: function getDateFormat(value) {\n var date = new Date(this.currDate); // 获取当前时间\n date.setDate(date.getDate() + value); // 设置天数 -1 天\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var newDate = m + '-' + d;\n return newDate;\n },\n /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/line/charts\",\n method: 'GET',\n success: function success(result) {\n var res = result.data;\n if (res.code === 200) {}\n }\n });\n },\n /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/loc/rep\",\n method: 'GET',\n success: function success(result) {\n var res = result.data;\n if (res.code === 200) {\n that.chartsData.Pie.series[0].data = res.data.pie;\n that.baseInfo.stockCount = res.data.stockCunt;\n that.baseInfo.emptyCount = res.data.emptyCount;\n that.baseInfo.noneCount = res.data.noneCount;\n that.baseInfo.used = res.data.used;\n that.baseInfo.usedPr = res.data.usedPr;\n }\n }\n });\n },\n getOther: function getOther() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/other\",\n data: {\n crnId: that.baseCrnId,\n ledId: that.baseLedId\n },\n success: function success(result) {\n // console.log(result);\n var res = result.data;\n if (res.code === 200) {\n that.baseInfo.xDistance = res.data.xDistance;\n that.baseInfo.yDistance = res.data.yDistance;\n that.baseInfo.xDuration = res.data.xDuration;\n that.baseInfo.yDuration = res.data.yDuration;\n } else if (res.code === 403) {} else {}\n }\n });\n },\n //检测当前平台,如果是安卓则启动安卓更新\n getVersion: function getVersion() {\n var that = this;\n uni.getSystemInfo({\n success: function success(res) {\n if (res.platform == \"android\") {\n that.AndroidCheckUpdate();\n }\n // that.AndroidCheckUpdate();\n }\n });\n },\n // 获取当前版本号\n AndroidCheckUpdate: function AndroidCheckUpdate() {\n var that = this;\n plus.runtime.getProperty(plus.runtime.appid, function (wgtinfo) {\n that.version = wgtinfo.version; //客户端版本号\n });\n\n setTimeout(function () {\n that.getUpdateVersion();\n }, 100);\n },\n // 校验版本\n getUpdateVersion: function getUpdateVersion() {\n var that = this;\n var type = 1;\n if (that.baseUrl == 'http://undefined:undefined/undefined') {\n return;\n }\n var wms = 'http://' + that.baseIP + ':' + that.wmsPort + \"/\" + that.wmsUrl;\n __f__(\"log\", wms, \" at pages/home/home.vue:1180\");\n var url = wms + '/appVersion/checkUpdate/' + that.version + '/' + type;\n uni.request({\n url: url,\n method: 'GET',\n success: function success(res) {\n __f__(\"log\", res, \" at pages/home/home.vue:1186\");\n var res = res.data;\n if (res.data) {\n that.filename = res.data.path;\n that.dialogContent = '发现新版本:' + res.data.version + ', 是否立即更新';\n that.$refs.upVersion.open();\n } else {\n uni.showToast({\n title: res.msg,\n icon: \"none\",\n position: 'top'\n });\n }\n }\n });\n },\n dialogConfirm: function dialogConfirm() {\n this.$refs.upVersion.close();\n this.downWgt();\n },\n dialogClose: function dialogClose() {\n this.$refs.upVersion.close();\n },\n downWgt: function downWgt() {\n var that = this;\n var wms = 'http://' + that.baseIP + ':' + that.wmsPort + \"/\" + that.wmsUrl;\n var downloadUrl = wms + \"/appVersion/downloadApp/\" + that.filename;\n uni.showLoading({\n title: '更新中……'\n });\n var downloadTask = uni.downloadFile({\n //执行下载\n url: downloadUrl,\n //下载地址\n timeout: 1000 * 30,\n //30秒超时时间\n success: function success(downloadResult) {\n //下载成功\n __f__(\"log\", downloadResult, \" at pages/home/home.vue:1221\");\n that.showdownLine = false;\n uni.hideLoading();\n if (downloadResult.statusCode == 200) {\n uni.showModal({\n title: '',\n content: '更新成功,确定现在重启吗?',\n confirmText: '重启',\n confirmColor: '#EE8F57',\n success: function success(res) {\n if (res.confirm == true) {\n plus.runtime.install(\n //安装\n downloadResult.tempFilePath, {\n force: true\n }, function (res) {\n utils.showToast('更新成功,重启中');\n plus.runtime.restart();\n });\n }\n }\n });\n } else {\n uni.hideLoading();\n that.showdownLine = false;\n uni.showToast({\n title: '请先上传安装包',\n icon: 'error'\n });\n }\n },\n fail: function fail(err) {\n uni.hideLoading();\n that.showdownLine = false;\n that.$u.toast(downloadResult.errMsg);\n },\n complete: function complete(com) {\n __f__(\"log\", com, \" at pages/home/home.vue:1260\");\n }\n });\n\n // 下载进度\n downloadTask.onProgressUpdate(function (res) {\n that.downloadNum = res.progress;\n __f__(\"log\", '下载进度' + that.downloadNum, \" at pages/home/home.vue:1267\");\n });\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwic2VyaWVzIiwiaG9tZVZpZXdTaG93IiwiaW5mb1ZpZXdTaG93IiwiZXJyb3JJbmZvVmlld1Nob3ciLCJob21lTW9kZSIsImluZm9Nb2RlIiwiZXJyb3JJbmZvTW9kZSIsIm5lZWRVcGRhdGVDaGFydHMiLCJ2aWV3U3dpdGNoVGltZXIiLCJ2aWV3U3dpdGNoSW5Qcm9ncmVzcyIsInRpbWVySWRzIiwiYmFzZUluZm8iLCJ4RGlzdGFuY2UiLCJ5RGlzdGFuY2UiLCJ4RHVyYXRpb24iLCJ5RHVyYXRpb24iLCJ1c2VkUHIiLCJ1c2VkIiwic3RvY2tDb3VudCIsImVtcHR5Q291bnQiLCJub25lQ291bnQiLCJjaGFydHNEYXRhIiwiZHVyYXRpb24iLCJjYWxlbmRhciIsInJpbmdPcHRzIiwiY2hhcnRzRGF0YUxpbmUxIiwiY2hhcnRzRGF0YVBpZTIiLCJmb250U2l6ZSIsImhlaWdodCIsInNob3dDaGFydHMiLCJlamVjdFNob3ciLCJiYXNlSVAiLCJiYXNlUG9ydCIsImJhc2VMZWRJZCIsImJhc2VDcm5JZCIsImJhc2VVcmwiLCJpbmZvIiwiZXJyb3IiLCJpbmZvVHlwZSIsInRleHQiLCJpbmZvVGV4dCIsInRpdGxlIiwic3RhTm8iLCJtYXRuciIsIm1ha254Iiwic3BlY3MiLCJjb3VudCIsImJhcmNvZGUiLCJzd2lwZXJMaXN0IiwidGltZU91dCIsInRpbWVzIiwiY3VyckRhdGUiLCJsb2NMaXN0Iiwib2xkSG91cnMiLCJvbGRNaW4iLCJzb2NrZXRDbGllbnQiLCJtZXNzYWdlcyIsInZlcnNpb24iLCJzb2NrZXRVcmwiLCJtc2dUeXBlIiwiZmlsZW5hbWUiLCJkaWFsb2dDb250ZW50Iiwid21zVXJsIiwid21zUG9ydCIsIm9uU2hvdyIsInBsdXMiLCJtb3VudGVkIiwidGhhdCIsImNyZWF0ZWQiLCJvbkxvYWQiLCJzZXRUaW1lb3V0Iiwic2V0SW50ZXJ2YWwiLCJvblVubG9hZCIsImJlZm9yZURlc3Ryb3kiLCJjbGVhclRpbWVvdXQiLCJtZXRob2RzIiwidW5pV2ViU29ja2V0IiwiaGVhcnRiZWF0SW50ZXJ2YWwiLCJyZWNvbm5lY3RJbnRlcnZhbCIsIm1heFJlY29ubmVjdEF0dGVtcHRzIiwib25NZXNzYWdlIiwib25PcGVuIiwib25FcnJvciIsIm9uQ2xvc2UiLCJvblJlY29ubmVjdCIsInNlbmRNZXNzYWdlIiwidHlwZSIsImNvbnRlbnQiLCJ0aW1lc3RhbXAiLCJ0aGVuIiwiY2F0Y2giLCJ3ZWJTb2NrZXJJbml0Iiwid3MiLCJzaG93RGF0ZSIsInN0YXRpc3RpY2FsTW9kZWwiLCJ1bmkiLCJ1cmwiLCJtZXRob2QiLCJzdWNjZXNzIiwiZ2V0VXJsIiwiZ2V0U2VydmVyRGF0YSIsImdldEluZm8yIiwiZ2V0RXJyb3IyIiwiZ2V0SW5mbyIsImxlZElkIiwiZmFpbCIsImdldEVycm9yIiwiY29udHJvbGxlciIsImhhbmRsZSIsImhhbmRsZTEiLCJoYW5kbGUyIiwiZWplY3RlZCIsImVqZWN0Q2xvc2UiLCJlamVjdENvbmZpcm0iLCJnZXREYXRlMiIsImdldERhdGUiLCJ5ZWFyIiwibW9udGgiLCJkYXkiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwid2Vla3MiLCJnZXREYXRlRm9ybWF0IiwiZGF0ZSIsImluaXRsaW5lQ2hhcnQiLCJpbml0UGllQ2hhcnQiLCJnZXRPdGhlciIsImNybklkIiwiZ2V0VmVyc2lvbiIsIkFuZHJvaWRDaGVja1VwZGF0ZSIsImdldFVwZGF0ZVZlcnNpb24iLCJpY29uIiwicG9zaXRpb24iLCJkaWFsb2dDb25maXJtIiwiZGlhbG9nQ2xvc2UiLCJkb3duV2d0IiwidGltZW91dCIsImNvbmZpcm1UZXh0IiwiY29uZmlybUNvbG9yIiwiZG93bmxvYWRSZXN1bHQiLCJmb3JjZSIsInV0aWxzIiwiY29tcGxldGUiLCJkb3dubG9hZFRhc2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFnVUE7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTtBQUFBLGVBQ0E7RUFDQUE7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUFBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztNQUNBO01BQ0FDO1FBQ0E7VUFDQTtVQUNBO1FBQ0E7UUFDQTtVQUNBO1lBQ0E7VUFDQTtRQUNBO01BQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQVQ7UUFDQVU7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztJQUVBO0VBQ0E7RUFDQUM7SUFDQTs7SUFFQUM7SUFFQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBQztJQUNBQTtJQUNBQTtJQUNBQTtJQUNBQTtJQUNBQTtJQUNBQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0FEO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0E7RUFDQTtFQUNBRTtJQUFBO0lBQ0E7SUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFFQTtJQUNBO0lBRUE7TUFDQUM7UUFDQUw7TUFDQTtJQUVBO0lBQ0E7SUFFQU07TUFDQU47TUFDQSw4QkFDQSxvQkFDQSw2QkFDQTtNQUNBO0lBRUE7RUFFQTtFQUNBTztJQUNBO0lBQ0E7TUFBQTtJQUFBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7O0lBRUE7SUFDQTtNQUFBO0lBQUE7SUFDQTs7SUFFQTtJQUNBO01BQ0FDO01BQ0E7SUFDQTtFQUNBO0VBQ0FDO0lBQ0FDO01BQ0E7TUFDQVQ7TUFDQUE7TUFDQTtNQUNBQTtRQUNBO1FBQ0FVO1FBQ0E7UUFDQUM7UUFDQTtRQUNBQztRQUNBO1FBQ0FDO1VBQ0E7WUFDQTtZQUNBYjtZQUNBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7UUFDQTtRQUNBYztVQUNBZDtVQUNBQTtVQUNBO1FBQ0E7UUFDQTtRQUNBZTtVQUNBO1FBQ0E7UUFDQTtRQUNBQztVQUNBaEI7VUFDQUE7VUFDQUE7VUFDQTtRQUNBO1FBQ0E7UUFDQWlCO1VBQ0E7UUFDQTtNQUNBOztNQUVBO01BQ0FqQjtJQUNBO0lBQ0E7SUFDQWtCO01BQ0E7UUFDQUM7UUFDQUM7UUFDQUM7TUFDQTtNQUVBLGdDQUNBQztRQUNBO01BQ0EsR0FDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUVBO1FBQ0F4QjtRQUNBQTtRQUNBQTtRQUNBO01BQ0E7TUFFQUE7TUFDQTtNQUNBO01BQ0E7TUFDQXlCO01BRUE7TUFFQUEsd0JBRUE7TUFFQUE7UUFDQXpCO1FBQ0E7UUFDQUE7TUFFQTtJQUVBO0lBQ0EwQjtNQUNBO01BQ0E7UUFDQTtRQUNBMUI7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7UUFFQUEsbUNBQ0FBLGtHQUNBQSxnR0FDQUE7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7TUFDQTtRQUNBO1VBQ0E7VUFDQTtZQUNBQTtZQUNBQTtZQUNBO1lBQ0FBO1lBQ0E7VUFDQTtVQUNBQTtVQUNBQTtVQUNBO1VBQ0FBO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7VUFDQUE7UUFDQTtNQUNBO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7VUFDQTtVQUNBQTtVQUNBO1lBQ0FBO1VBQ0E7WUFDQUE7VUFDQTtZQUNBQTtVQUNBO1lBQ0FBO1VBQ0E7WUFDQUE7VUFDQTtZQUNBQTtVQUNBO1lBQ0FBO1VBQ0E7WUFDQUE7VUFDQTtVQUNBQTtVQUNBQTtVQUNBQTtVQUNBQTtVQUNBQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7VUFDQUE7UUFDQTtNQUNBO0lBQ0E7SUFDQTJCO01BQ0E7TUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7VUFDQTtVQUNBO1lBQ0E7WUFDQS9CO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQWdDO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBO1VBQ0E7UUFDQTtRQUNBO1FBQ0FsQztRQUNBO1VBQ0FBO1FBQ0E7VUFDQUE7UUFDQTtVQUNBQTtRQUNBO1VBQ0FBO1FBQ0E7VUFDQUE7UUFDQTtVQUNBQTtRQUNBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO1VBQ0E7UUFDQTtRQUNBQTtNQUNBO0lBQ0E7SUFDQW1DO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1VBQ0FuQztVQUNBQTtVQUNBO1VBQ0FBO1VBQ0E7UUFDQTtRQUNBQTtRQUNBQTtRQUNBO1FBQ0FBO01BQ0E7UUFDQTtVQUNBO1FBQ0E7UUFDQUE7TUFDQTtJQUNBO0lBQ0FvQztNQUNBO01BQ0FSO1FBQ0FDO1FBQ0FDO1FBQ0FsRztVQUFBeUc7UUFBQTtRQUNBTjtVQUNBL0I7VUFDQUE7VUFDQTtVQUNBO1lBQ0E7Y0FDQTtZQUNBO1lBQ0E7WUFDQUE7WUFDQTtjQUNBQTtZQUNBO2NBQ0FBO1lBQ0E7Y0FDQUE7WUFDQTtjQUNBQTtZQUNBO2NBQ0FBO1lBQ0E7Y0FDQUE7WUFDQTtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1VBQ0E7WUFDQTtjQUNBO1lBQ0E7WUFDQUE7VUFDQTtRQUNBO1FBQ0FzQztVQUNBdEM7VUFDQUE7VUFDQUE7UUFDQTtNQUNBO0lBRUE7SUFDQXVDO01BQ0E7TUFDQVg7UUFDQUM7UUFDQWpHO1VBQUF5RztRQUFBO1FBQ0FQO1FBQ0FDO1VBQ0EvQjtVQUNBQTtVQUNBO1VBQ0E7WUFDQTtZQUNBO2NBQ0FBO2NBQ0FBO2NBQ0E7Y0FDQUE7Y0FDQTtZQUNBO1lBQ0FBO1lBQ0FBO1lBQ0E7WUFDQUE7VUFDQTtZQUNBO2NBQ0E7WUFDQTtZQUNBQTtVQUNBO1FBQ0E7UUFDQXNDO1VBQ0F0QztVQUNBQTtRQUNBO01BQ0E7SUFFQTtJQUNBO0lBQ0F3QztNQUFBO01BQ0E7TUFDQTtRQUNBO01BQ0E7O01BRUE7TUFDQTtRQUNBakM7UUFDQTtNQUNBO01BRUE7UUFDQTtRQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtjQUNBO2NBQ0E7Y0FDQTtjQUNBSjtnQkFDQTtjQUNBO1lBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0E7Y0FDQTtjQUNBO2NBQ0FBO2dCQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtjQUNBO2NBQ0E7Y0FDQTtjQUNBQTtnQkFDQTtjQUNBO1lBQ0E7VUFDQTtVQUNBO1FBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0E7Y0FDQTtjQUNBO2NBQ0FBO2dCQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7Y0FDQTtjQUNBO2NBQ0E7Y0FDQUE7Z0JBQ0E7Y0FDQTtZQUNBO1VBQ0E7VUFFQTtRQUNBO1FBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0E7Y0FDQTtjQUNBO2NBQ0FBO2dCQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7Y0FDQTtjQUNBO2NBQ0E7Y0FDQUE7Z0JBQ0E7Y0FDQTtZQUNBO1VBQ0E7VUFDQTtRQUNBO1FBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0E7Y0FDQTtjQUNBO2NBQ0FBO2dCQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7Y0FDQTtjQUNBO2NBQ0E7Y0FDQUE7Z0JBQ0E7Y0FDQTtZQUNBO1VBQ0E7VUFDQTtNQUFBO0lBSUE7SUFDQTtJQUNBc0M7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQWxCO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQW1CO01BQ0E7TUFDQW5CO1FBQ0FDO1FBQ0FDO1FBQ0FDO1VBQ0E7UUFFQTtNQUNBO0lBQ0E7SUFFQTtJQUNBaUI7TUFDQTtNQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0E7UUFDQTtVQUFBQTtVQUFBO1FBQ0E7VUFBQUE7VUFBQTtRQUNBO1VBQUFBO1VBQUE7UUFDQTtVQUFBQTtVQUFBO1FBQ0E7VUFBQUE7VUFBQTtRQUNBO1VBQUFBO1VBQUE7UUFDQTtVQUFBQTtNQUFBO01BRUE7SUFDQTtJQUNBQztNQUNBO01BQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBLDJIQUNBQztNQUNBO01BQ0E5QjtRQUNBQztRQUNBQztRQUNBQztVQUNBO1VBQ0EsdUJBRUE7UUFDQTtNQUNBO0lBQ0E7SUFDQSwwSEFDQTRCO01BQ0E7TUFDQS9CO1FBQ0FDO1FBQ0FDO1FBQ0FDO1VBQ0E7VUFDQTtZQUNBL0I7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBNEQ7TUFDQTtNQUNBaEM7UUFDQUM7UUFDQWpHO1VBQ0FpSTtVQUNBeEI7UUFDQTtRQUNBTjtVQUNBO1VBQ0E7VUFDQTtZQUNBL0I7WUFDQUE7WUFDQUE7WUFDQUE7VUFDQSw4QkFFQSxRQUVBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQThEO01BQ0E7TUFDQWxDO1FBQ0FHO1VBQ0E7WUFDQS9CO1VBQ0E7VUFDQTtRQUVBO01BQ0E7SUFDQTtJQUNBO0lBQ0ErRDtNQUNBO01BQ0FqRTtRQUNBRTtNQUNBOztNQUNBRztRQUNBSDtNQUNBO0lBQ0E7SUFDQTtJQUNBZ0U7TUFDQTtNQUNBO01BQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0FwQztRQUNBQztRQUNBQztRQUNBQztVQUNBO1VBQ0E7VUFDQTtZQUNBL0I7WUFDQUE7WUFDQUE7VUFDQTtZQUNBNEI7Y0FDQXREO2NBQ0EyRjtjQUNBQztZQUNBO1VBQ0E7UUFFQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0F6QztRQUNBdEQ7TUFDQTtNQUNBO1FBQUE7UUFDQXVEO1FBQUE7UUFDQXlDO1FBQUE7UUFDQXZDO1VBQUE7VUFDQTtVQUNBL0I7VUFDQTRCO1VBQ0E7WUFDQUE7Y0FDQXREO2NBQ0E4QztjQUNBbUQ7Y0FDQUM7Y0FDQXpDO2dCQUNBO2tCQUNBakM7a0JBQUE7a0JBQ0EyRTtvQkFDQUM7a0JBQ0EsR0FDQTtvQkFDQUM7b0JBQ0E3RTtrQkFDQSxFQUNBO2dCQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E4QjtZQUNBNUI7WUFDQTRCO2NBQ0F0RDtjQUNBMkY7WUFDQTtVQUNBO1FBQ0E7UUFDQTNCO1VBQ0FWO1VBQ0E1QjtVQUNBQTtRQUNBO1FBQ0E0RTtVQUVBO1FBQ0E7TUFDQTs7TUFFQTtNQUNBQztRQUNBN0U7UUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUVBO0FBQUEsMkIiLCJmaWxlIjoiMTE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHQ8dW5pLXRyYW5zaXRpb24gOmR1cmF0aW9uPVwiZHVyYXRpb25cIiA6bW9kZS1jbGFzcz1cImhvbWVNb2RlXCIgOnNob3c9XCJob21lVmlld1Nob3dcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJob21lLXZpZXdcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImhlYWRcIj5cclxuXHRcdFx0XHRcdDx0ZXh0PuaZuuiDveWkp+Wxj+aYvuekuuezu+e7nzwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PCEtLSDml6XljoYgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aW1lLXRvb2xzXCI+e3tjYWxlbmRhcn19PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidmVyc2lvblwiPlY6e3t2ZXJzaW9ufX08L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tbGVmdFwiIEBjbGljaz1cImVqZWN0ZWQoKVwiPjwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1yaWdodFwiIEBjbGljaz1cImVqZWN0ZWQoKVwiPjwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIOS4u+inhuWbviAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cIm1haW5cIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibWlhbi1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibWlhbi1pdGVtLWJveFwiPlxyXG5cdFx0XHRcdFx0XHRcdDx5LWJveD5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5pm66IO95aSn5bGP5pi+56S657O757ufPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj5JbnRlbGxpZ2VudCBMYXJnZVNjcmVlbiBEaXNwbGF5IFN5c3RlbTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj7ku5PlupPmlbDmja48L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPndhcmVob3VzZSBkYXRhPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImltZy1ib3hcIj5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gc3dpcGVyIOS4gOS6m+ivtOaYjlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNpcmN1bGFyIOaYr+WQpumHh+eUqOihlOaOpea7keWKqO+8jOWNs+aSreaUvuWIsOacq+WwvuWQjumHjeaWsOWbnuWIsOW8gOWktFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZlcnRpY2FsIOa7keWKqOaWueWQkeaYr+WQpuS4uue6teWQkSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5LW11bHRpcGxlLWl0ZW1zIOWQjOaXtuaYvuekuueahOa7keWdl+aVsOmHjyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3dpcGVyIGNsYXNzPVwic3dpcGVyLWJvZHktbWFpblwiIHZlcnRpY2FsPVwidHJ1ZVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXktbXVsdGlwbGUtaXRlbXM9XCI1XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjaXJjdWxhcj1cInRydWVcIiA6YXV0b3BsYXk9XCJ0cnVlXCIgOmludGVydmFsPVwiMzAwMFwiIDpkdXJhdGlvbj1cIjIwMDBcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzd2lwZXItaXRlbSBjbGFzcz1cInN3aXBlci1pdGVtXCIgdi1mb3I9XCIoaXRlbSxpKSBpbiBsb2NMaXN0XCIgOmtleT1cImlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8dmlldyBzdHlsZT1cIndpZHRoOiAzMCU7XCI+e3tpKzF9fSAvIHt7c3dpcGVyTGlzdC5sZW5ndGh9fTwvdmlldz4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHZpZXcgc3R5bGU9XCJ3aWR0aDogMzAlO1wiPuaWmeWPtzoge3tpdGVtLm1hdG5yfX08L3ZpZXc+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogMXZ3O1wiPueJqeaWmeeggToge3tpdGVtLm1hdG5yfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDUwJTsgZm9udC1zaXplOiAxdnc7XCI+5pWw6YePOiB7e2l0ZW0ubWF0bnJDb3VudH19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zd2lwZXItaXRlbT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3N3aXBlcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOW3puS+pyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj7lupPkvY3kvb/nlKjnjoc8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj5FUVVJUE1FTlQgVVNBR0UgVEhJUyBNT05USDwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlj7PkvqcgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bztcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g55m+5YiG5q+UIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtZW5kO2p1c3RpZnktY29udGVudDogZmxleC1lbmQ7XCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwO3JpZ2h0OiAxdnc7dGV4dC1hbGlnbjogcmlnaHQ7XCIgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPnt7YmFzZUluZm8udXNlZFByfX0lPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPuWQjOavlOS4iuaciCArIDUlPC90ZXh0PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cIndpZHRoOiAxMDAlO2FsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O3Bvc2l0aW9uOiByZWxhdGl2ZTtmb250LXNpemU6IDF2d1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g6L+b5bqm5p2hIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO3Bvc2l0aW9uOiByZWxhdGl2ZTttYXJnaW4tdG9wOiA1JTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwicHJvZ3Jlc3NCYXJcIiBzdHlsZT1cIndpZHRoOiA4MCU7aGVpZ2h0OiAydnc7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwicHJvZ3Jlc3NcIiA6c3R5bGU9XCInd2lkdGg6JysgYmFzZUluZm8udXNlZFByICsgJyUnXCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOiAwO3JpZ2h0OiAwO2ZvbnQtc2l6ZTogMi41dnc7Y29sb3I6ICNGRjU3MjI7O1wiPnt7YmFzZUluZm8udXNlZH19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwveS1ib3g+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibWlhbi1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibWlhbi1pdGVtLWJveFwiPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDM1JTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDmipjnur/lm74gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx5LWJveD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJveC1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlt6bkvqcgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj7lhaXlh7rlupPnu5/orqE8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+T1JERVIgU1RBVElTVElDUzwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWPs+S+pyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bztcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOeZvuWIhuavlCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwO3JpZ2h0OiAxdnc7dGV4dC1hbGlnbjogcmlnaHQ7XCIgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPjMxPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+5LuK5pel6K6i5Y2V5pWwPC90ZXh0PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2hhcnRzLWJveFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cWl1bi1kYXRhLWNoYXJ0cyB0eXBlPVwibGluZVwiIDpjaGFydERhdGE9XCJjaGFydHNEYXRhTGluZTFcIiA6ZWNoYXJ0c0g1PVwidHJ1ZVwiIDplY2hhcnRzQXBwPVwidHJ1ZVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwveS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSBudWxsIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDIlO1wiPjwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogNDMlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8eS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvd1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5bem5L6nIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5bqT5a2Y57G75Z6LPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPklOQ09NRSBEQVRFPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5Y+z5L6nIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g55m+5YiG5q+UIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1jb2xcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1wiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuS7iuWkqTwvdGV4dD4gXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj5Ub2RheTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOW3piAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGFydHMtYm94LXJpbmdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cWl1bi1kYXRhLWNoYXJ0cyB0eXBlPVwicmluZ1wiIDpvcHRzPVwie2xlZ2VuZDp7cG9zaXRpb246J2JvdHRvbSd9fVwiIDplb3B0cz1cInJpbmdPcHRzXCIgOmNoYXJ0RGF0YT1cImNoYXJ0c0RhdGFQaWUyXCIgOmVjaGFydHNINT1cInRydWVcIiA6ZWNoYXJ0c0FwcD1cInRydWVcIi8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlj7MgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3cgc3ViLWluZm9cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvZzEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztcIj7lnKjlupM8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztmb250LXNpemU6IDJ2dztcIj57e2Jhc2VJbmZvLnN0b2NrQ291bnR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvdyBzdWItaW5mb1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMnZoO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9mMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O1wiPuepuuW6kzwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O2ZvbnQtc2l6ZTogMnZ3O1wiPnt7YmFzZUluZm8uZW1wdHlDb3VudH19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93IHN1Yi1pbmZvXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAydmg7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2UxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7XCI+6ZSB5a6aPC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7Zm9udC1zaXplOiAydnc7XCI+e3tiYXNlSW5mby5ub25lQ291bnR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwveS1ib3g+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMiU7XCI+PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDE4JTtkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO2FsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHZpZXcgc3R5bGU9XCJmb250LXNpemU6IDR2aFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdOiHquWKqOS7k+W6k1dDU+ebkeaOp+W5s+WPsFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogNTAlO1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzdHlsZT1cImhlaWdodDogMTAwJTtcIiBzcmM9XCIuLi8uLi9zdGF0aWMvaW1nL2xvZ28tYmFpLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3VuaS10cmFuc2l0aW9uPlxyXG5cdFx0PCEtLSDlhajmnb8v5ouj5paZ5L+h5oGvIC0tPlxyXG5cdFx0PHVuaS10cmFuc2l0aW9uIDpkdXJhdGlvbj1cImR1cmF0aW9uXCIgOm1vZGUtY2xhc3M9XCJpbmZvTW9kZVwiIDpzaG93PVwiaW5mb1ZpZXdTaG93XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaG9tZS12aWV3XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkXCI+XHJcblx0XHRcdFx0XHQ8dGV4dD57e2luZm9UZXh0LnRpdGxlfX08L3RleHQ+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5pel5Y6GIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGltZS10b29sc1wiPnt7Y2FsZW5kYXJ9fTwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1sZWZ0XCIgQGNsaWNrPVwiZWplY3RlZCgpXCI+PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLXJpZ2h0XCIgQGNsaWNrPVwiZWplY3RlZCgpXCI+PC92aWV3PlxyXG5cdFx0XHRcdDwhLS0g5Li75L2TIC0tPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1tYWluXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImluZm8tYm94XCI+XHJcblx0XHRcdFx0XHRcdDx5LWJveD5cclxuXHRcdFx0XHRcdFx0XHQ8IS0tIOaWh+acrOWuueWZqCAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInRleHQtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSBoZWFkIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzd2lwZXItaGVhZFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAzMCU7XCI+5omY55uY56CBOiB7e2luZm9UZXh0LmJhcmNvZGV9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMjAlO1wiPuW3peS9nOWPtzoge3tpbmZvVGV4dC53b3JrTm99fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMzAlO1wiPua6kOW6k+S9jToge3tpbmZvVGV4dC5zb3VyY2VMb2NOb319PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAyMCU7XCI+55uu5qCH56uZOiB7e2luZm9UZXh0LnN0YU5vfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAlO1wiPuaVsOmHjzwvdmlldz4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIGJvZHkgLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN3aXBlci1ib2R5XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gc3dpcGVyIOS4gOS6m+ivtOaYjlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjaXJjdWxhciDmmK/lkKbph4fnlKjooZTmjqXmu5HliqjvvIzljbPmkq3mlL7liLDmnKvlsL7lkI7ph43mlrDlm57liLDlvIDlpLRcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmVydGljYWwg5ruR5Yqo5pa55ZCR5piv5ZCm5Li657q15ZCRIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5LW11bHRpcGxlLWl0ZW1zIOWQjOaXtuaYvuekuueahOa7keWdl+aVsOmHjyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHN3aXBlciBjbGFzcz1cInN3aXBlci1ib2R5LW1haW5cIiB2ZXJ0aWNhbD1cInRydWVcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheS1tdWx0aXBsZS1pdGVtcz1cIjFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjaXJjdWxhcj1cInRydWVcIiA6YXV0b3BsYXk9XCJ0cnVlXCIgOmludGVydmFsPVwiMzAwMFwiIDpkdXJhdGlvbj1cIjIwMDBcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3dpcGVyLWl0ZW0gY2xhc3M9XCJzd2lwZXItaXRlbVwiIHYtZm9yPVwiKGl0ZW0saSkgaW4gc3dpcGVyTGlzdFwiIDprZXk9XCJpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPnt7aSsxfX0gLyB7e3N3aXBlckxpc3QubGVuZ3RofX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIDx2aWV3IHN0eWxlPVwid2lkdGg6IDMwJTtcIj7mlpnlj7c6IHt7aXRlbS5tYXRucn19PC92aWV3PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDUwJTsgZm9udC1zaXplOiAzdnc7XCI+54mp5paZ57yW56CBOiB7e2l0ZW0ubWF0bnJ9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDUwJTsgZm9udC1zaXplOiAzdnc7XCI+5ZCN56ewOiB7e2l0ZW0ubWFrbnh9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHZpZXcgc3R5bGU9XCJ3aWR0aDogMzMlOyBmb250LXNpemU6IDN2dztcIj7nlJ/kuqfml6XmnJ86IHt7aXRlbS5tYW51RGF0ZX19PC92aWV3PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogM3Z3O1wiPuinhOagvDoge3tpdGVtLnNwZWNzfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogM3Z3O1wiPuaJueasoToge3tpdGVtLmJhdGNofX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogM3Z3O1wiPumUgOWUruWNleWPtzoge3tpdGVtLm9yZGVyTm99fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDUwJTsgZm9udC1zaXplOiAzdnc7XCI+5a6i5oi35ZCN56ewOiB7e2l0ZW0uY3VzdG9tZXJ9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDMzJTsgZm9udC1zaXplOiAzdnc7XCI+5pWw6YePOiB7e2l0ZW0uY291bnR9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zd2lwZXItaXRlbT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9zd2lwZXI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ktYm94PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC91bmktdHJhbnNpdGlvbj5cclxuXHRcdDwhLS0g5byC5bi45L+h5oGvIC0tPlxyXG5cdFx0PHVuaS10cmFuc2l0aW9uIDpkdXJhdGlvbj1cImR1cmF0aW9uXCIgOm1vZGUtY2xhc3M9XCJlcnJvckluZm9Nb2RlXCIgOnNob3c9XCJlcnJvckluZm9WaWV3U2hvd1wiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImVycm9yLWluZm8tdmlld1wiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaGVhZFwiPlxyXG5cdFx0XHRcdFx0PHRleHQ+e3tpbmZvVGV4dC50aXRsZX19PC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIOaXpeWOhiAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRpbWUtdG9vbHNcIj57e2NhbGVuZGFyfX08L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24tbGVmdFwiPjwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1yaWdodFwiPjwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIOS4u+S9kyAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImluZm8tbWFpblwiID5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1ib3hcIj5cclxuXHRcdFx0XHRcdFx0PHktYm94PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1ib3gtdGV4dFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbCBpbmZvLWJveC10ZXh0LWl0ZW1cIj57e2luZm9UZXh0LmVycm9yfX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ktYm94PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC91bmktdHJhbnNpdGlvbj5cclxuXHRcdFxyXG5cdFx0PCEtLSDoh6rlrprkuYnlvLnlh7rlsYIgLS0+XHJcblx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LW1hc2tcIiB2LXNob3c9XCJlamVjdFNob3dcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJlamVjdFwiPlxyXG5cdFx0XHRcdDwhLS0g5by55Ye6dGl0bGUgLS0+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJlamVjdC10aXRsZVwiPuS/ruaUuSAvIOmFjee9rjwvdmlldz5cclxuXHRcdFx0XHQ8IS0tIGlucHV0IC0tPlxyXG5cdFx0XHRcdDxzY3JvbGwtdmlldyBzY3JvbGwteSBjbGFzcz1cImVqZWN0LWlucHV0XCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+aXDvvJo8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZUlQXCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5XY3Nwb3J077yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VQb3J0XCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPldjc1VybO+8mjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlVXJsXCI+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5XbXNwb3J077yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIndtc1BvcnRcIj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPldtc1VybO+8mjwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJ3bXNVcmxcIj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPmxlZElk77yaPC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XHJcblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VMZWRJZFwiPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC9zY3JvbGwtdmlldz5cclxuXHRcdFx0XHQ8IS0tIGJ1dHRvbiAtLT5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LWJ1dHRvblwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24taXRlbVwiIEBjbGljaz1cImVqZWN0Q2xvc2VcIj7lj5Yg5raIPC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24taXRlbVwiIEBjbGljaz1cImVqZWN0Q29uZmlybVwiPuehriDorqQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldz5cclxuXHRcdFx0PCEtLSDmj5DnpLrnqpfnpLrkvosgLS0+XHJcblx0XHRcdDx1bmktcG9wdXAgcmVmPVwidXBWZXJzaW9uXCIgdHlwZT1cImRpYWxvZ1wiPlxyXG5cdFx0XHRcdDx1bmktcG9wdXAtZGlhbG9nIDp0eXBlPVwibXNnVHlwZVwiIHRpdGxlPVwi6YCa55+lXCIgOmNvbnRlbnQ9XCJkaWFsb2dDb250ZW50XCIgQGNvbmZpcm09XCJkaWFsb2dDb25maXJtXCJcclxuXHRcdFx0XHRcdEBjbG9zZT1cImRpYWxvZ0Nsb3NlXCI+PC91bmktcG9wdXAtZGlhbG9nPlxyXG5cdFx0XHQ8L3VuaS1wb3B1cD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IHN0eWxlPVwiY29sb3I6ICNGRkY7cG9zaXRpb246IGZpeGVkO2JvdHRvbTogMTBweDtsZWZ0OiAxMHB4O1wiIHYtc2hvdz1cInRpbWVPdXRcIj5cclxuXHRcdFx06L+e5o6l6LaF5pe277yM5q2j5Zyo6YeN5paw5bu656uL6ZO+5o6lOjoge3t0aW1lc319IFxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuPCEtLSB7XCJtc2dcIjpcIuaTjeS9nOaIkOWKn1wiLFwiY29kZVwiOjIwMCxcImRhdGFcIjpbe1widGl0bGVcIjpcIuWFqOadv+WHuuW6k1wiLFwid29ya05vXCI6NzQ2MCxcInN0YU5vXCI6MTEwLFwic291cmNlU3RhTm9cIjpudWxsLFwibG9jTm9cIjpudWxsLFwic291cmNlTG9jTm9cIjpcIjA4MDcxMDJcIixcIm1hdER0b3NcIjpbe1wibWF0Tm9cIjpcIjUwNDYwODM0XCIsXCJtYWtueFwiOlwiMjAweDYw5qGM6Z2iXCIsXCJjb3VudFwiOjI2LjB9XSxcImVtcHR5TWtcIjpmYWxzZSxcImlvVHlwZVwiOjEwMX1dfSAtLT5cclxuPHNjcmlwdD5cclxuXHRcclxuXHRpbXBvcnQgeWNxZGF0YSBmcm9tICdAL3BhZ2VzL2luZGV4L2RhdGEuanNvbic7XHJcblx0XHJcblx0aW1wb3J0IFdlYlNvY2tldFV0aWwgZnJvbSAnLi91bmlXZWJTb2NrZXQnO1xyXG5cdGxldCBzb2NrZXQ7XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRzZXJpZXM6IFtdLFxyXG5cdFx0XHRcdGhvbWVWaWV3U2hvdzogdHJ1ZSxcclxuXHRcdFx0XHRpbmZvVmlld1Nob3c6IGZhbHNlXHQsXHJcblx0XHRcdFx0ZXJyb3JJbmZvVmlld1Nob3c6IGZhbHNlLFxyXG5cdFx0XHRcdGhvbWVNb2RlOiBbXSxcclxuXHRcdFx0XHRpbmZvTW9kZTogW10sXHJcblx0XHRcdFx0ZXJyb3JJbmZvTW9kZTogW10sXHJcblx0XHRcdFx0bmVlZFVwZGF0ZUNoYXJ0czogZmFsc2UsXHJcblx0XHRcdFx0dmlld1N3aXRjaFRpbWVyOiBudWxsLCAvLyDop4blm77liIfmjaLlrprml7blmahcclxuXHRcdFx0XHR2aWV3U3dpdGNoSW5Qcm9ncmVzczogZmFsc2UsIC8vIOa3u+WKoOi/meS4gOihjOadpei3n+i4quinhuWbvuWIh+aNoueKtuaAgVxyXG5cdFx0XHRcdHRpbWVySWRzOiBbXSwgLy8g5a2Y5YKo5a6a5pe25ZmoSURcclxuXHRcdFx0XHRiYXNlSW5mbzoge1xyXG5cdFx0XHRcdFx0eERpc3RhbmNlOiAxLFxyXG5cdFx0XHRcdFx0eURpc3RhbmNlOiAyLFxyXG5cdFx0XHRcdFx0eER1cmF0aW9uOiAzLFxyXG5cdFx0XHRcdFx0eUR1cmF0aW9uOiA0LFxyXG5cdFx0XHRcdFx0dXNlZFByOiA1MCxcclxuXHRcdFx0XHRcdHVzZWQ6IDM1MzcsXHJcblx0XHRcdFx0XHRzdG9ja0NvdW50OiAnJyxcclxuXHRcdFx0XHRcdGVtcHR5Q291bnQ6ICcnLFxyXG5cdFx0XHRcdFx0bm9uZUNvdW50OiAnJyxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGNoYXJ0c0RhdGE6IHtcclxuXHRcdFx0XHRcdFwiTGluZVwiOiB7XHJcblx0XHRcdFx0XHRcdFwiY2F0ZWdvcmllc1wiOiBbXSxcclxuXHRcdFx0XHRcdFx0XCJzZXJpZXNcIjogW11cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcIlBpZVwiOiB7XHJcblx0XHRcdFx0XHRcdFwic2VyaWVzXCI6IFt7XHJcblx0XHRcdFx0XHRcdFx0XCJkYXRhXCI6IFtdXHJcblx0XHRcdFx0XHRcdH1dXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZHVyYXRpb246IDEwMDAsXHJcblx0XHRcdFx0Y2FsZW5kYXI6ICcnLFxyXG5cdFx0XHRcdHJpbmdPcHRzOnt9LFxyXG5cdFx0XHRcdGNoYXJ0c0RhdGFMaW5lMToge30sXHJcblx0XHRcdFx0Y2hhcnRzRGF0YVBpZTI6IHt9LFxyXG5cdFx0XHRcdGZvbnRTaXplOiAnJyxcclxuXHRcdFx0XHRoZWlnaHQ6ICcnLFxyXG5cdFx0XHRcdHNob3dDaGFydHM6IGZhbHNlLFxyXG5cdFx0XHRcdGVqZWN0U2hvdzogZmFsc2UsXHJcblx0XHRcdFx0YmFzZUlQOiAnJyxcclxuXHRcdFx0XHRiYXNlUG9ydDogJycsXHJcblx0XHRcdFx0YmFzZUxlZElkOiAnJyxcclxuXHRcdFx0XHRiYXNlQ3JuSWQ6ICcnLFxyXG5cdFx0XHRcdGJhc2VVcmw6ICcnLFxyXG5cdFx0XHRcdGluZm86IG51bGwsXHJcblx0XHRcdFx0ZXJyb3I6IG51bGwsXHJcblx0XHRcdFx0aW5mb1R5cGU6IDAsXHJcblx0XHRcdFx0dGV4dDogJycsXHJcblx0XHRcdFx0aW5mb1RleHQ6IHtcclxuXHRcdFx0XHRcdHRpdGxlOiAnJyxcclxuXHRcdFx0XHRcdHN0YU5vOiBcIlwiLFxyXG5cdFx0XHRcdFx0bWF0bnI6IFwiXCIsXHJcblx0XHRcdFx0XHRtYWtueDogXCJcIixcclxuXHRcdFx0XHRcdHNwZWNzOiBcIlwiLFxyXG5cdFx0XHRcdFx0Y291bnQ6IFwiXCIsXHJcblx0XHRcdFx0XHRlcnJvcjogXCJcIixcclxuXHRcdFx0XHRcdGJhcmNvZGU6IFwiXCJcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHN3aXBlckxpc3Q6IFtdLFxyXG5cdFx0XHRcdHRpbWVPdXQ6IGZhbHNlLFxyXG5cdFx0XHRcdHRpbWVzOiAwLFxyXG5cdFx0XHRcdGN1cnJEYXRlOiAnJyxcclxuXHRcdFx0XHRsb2NMaXN0OltdLFx0XHJcblx0XHRcdFx0b2xkSG91cnM6JycsXHJcblx0XHRcdFx0b2xkTWluOicnLFxyXG5cdFx0XHRcdHNvY2tldENsaWVudDogbnVsbCxcclxuXHRcdFx0XHRtZXNzYWdlczogW10sXHJcblx0XHRcdFx0dmVyc2lvbjonJyxcclxuXHRcdFx0XHRzb2NrZXRVcmw6JycsXHJcblx0XHRcdFx0bXNnVHlwZTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRcdGZpbGVuYW1lOiAnJyxcclxuXHRcdFx0XHRkaWFsb2dDb250ZW50OiAnJyxcclxuXHRcdFx0XHR3bXNVcmw6JycsXHJcblx0XHRcdFx0d21zUG9ydDonJ1xyXG5cdFx0XHRcdFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0b25TaG93KCkge1xyXG5cdFx0XHQvLyDpmpDol4/ml7bpl7Qs55S16YePLOS/oeWPt+etiVxyXG5cdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcclxuXHRcdFx0cGx1cy5uYXZpZ2F0b3Iuc2V0RnVsbHNjcmVlbih0cnVlKVxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0dGhpcy5nZXRWZXJzaW9uKClcclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0Y29uc3QgQmFzZUlQID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlSXAnKTtcclxuXHRcdFx0Y29uc3QgQmFzZUxlZElkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnKTtcclxuXHRcdFx0Y29uc3QgQmFzZVBvcnQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyk7XHJcblx0XHRcdGNvbnN0IEJhc2VDcm5JZCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUNybklkJyk7XHJcblx0XHRcdGNvbnN0IFBST0ogPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ1VQUk9KJyk7XHJcblx0XHRcdGNvbnN0IFdNU1VSTCA9IHVuaS5nZXRTdG9yYWdlU3luYygnd21zVXJsJyk7XHJcblx0XHRcdGNvbnN0IFdNU1BPUlQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3dtc1BvcnQnKTtcclxuXHRcdFx0dGhhdC5iYXNlVXJsID0gUFJPSlxyXG5cdFx0XHR0aGF0LmJhc2VJUCA9IEJhc2VJUFxyXG5cdFx0XHR0aGF0LmJhc2VMZWRJZCA9IEJhc2VMZWRJZFxyXG5cdFx0XHR0aGF0LmJhc2VQb3J0ID0gQmFzZVBvcnRcclxuXHRcdFx0dGhhdC5iYXNlQ3JuSWQgPSBCYXNlQ3JuSWRcclxuXHRcdFx0dGhhdC53bXNVcmwgPSBXTVNVUkxcclxuXHRcdFx0dGhhdC53bXNQb3J0ID0gV01TUE9SVFxyXG5cdFx0XHQvLyB0aGlzLmdldFVybCgpXHJcblx0XHR9LFxyXG5cdFx0Y3JlYXRlZCgpIHtcclxuXHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdGNvbnN0IEJhc2VJUCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUlwJyk7XHJcblx0XHRcdGNvbnN0IEJhc2VMZWRJZCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUxlZElkJyk7XHJcblx0XHRcdGNvbnN0IEJhc2VQb3J0ID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlUG9ydCcpO1xyXG5cdFx0XHRjb25zdCBCYXNlQ3JuSWQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcpO1xyXG5cdFx0XHRjb25zdCBQUk9KID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdVUFJPSicpO1xyXG5cdFx0XHRjb25zdCBXTVNVUkwgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3dtc1VybCcpO1xyXG5cdFx0XHRjb25zdCBXTVNQT1JUID0gdW5pLmdldFN0b3JhZ2VTeW5jKCd3bXNQb3J0Jyk7XHJcblx0XHRcdHRoYXQuYmFzZVVybCA9IFBST0pcclxuXHRcdFx0dGhhdC5iYXNlSVAgPSBCYXNlSVBcclxuXHRcdFx0dGhhdC5iYXNlTGVkSWQgPSBCYXNlTGVkSWRcclxuXHRcdFx0dGhhdC5iYXNlUG9ydCA9IEJhc2VQb3J0XHJcblx0XHRcdHRoYXQuYmFzZUNybklkID0gQmFzZUNybklkXHJcblx0XHRcdHRoYXQud21zVXJsID0gV01TVVJMXHJcblx0XHRcdHRoYXQud21zUG9ydCA9IFdNU1BPUlRcclxuXHRcdFx0dGhhdC51bmlXZWJTb2NrZXQoKTtcclxuXHRcdFx0Ly8gdGhhdC53ZWJTb2NrZXJJbml0KClcclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoKSB7XHRcdFx0XHJcblx0XHRcdC8vIOWtmOWCqOWumuaXtuWZqElE5Lul5L6/5ZCO57ut5riF55CGXHJcblx0XHRcdGNvbnN0IHRpbWVySWQxID0gc2V0SW50ZXJ2YWwoKCk9PntcclxuXHRcdFx0XHR0aGlzLmdldFNlcnZlckRhdGEoKVxyXG5cdFx0XHRcdC8vIHRoaXMuaW5pdGxpbmVDaGFydCgpXHJcblx0XHRcdFx0Ly8gdGhpcy5pbml0UGllQ2hhcnQoKVxyXG5cdFx0XHRcdC8vIHRoaXMuZ2V0T3RoZXIoKVxyXG5cdFx0XHRcdC8vIC8vIHRoaXMuZ2V0RGF0ZSgpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXREYXRlMigpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRJbmZvKClcclxuXHRcdFx0XHQvLyB0aGlzLmdldEVycm9yKClcclxuXHRcdFx0XHQvLyB0aGlzLmdldEluZm8yKClcclxuXHRcdFx0XHQvLyB0aGlzLmdldEVycm9yMigpXHJcblx0XHRcdFx0Ly8gdGhpcy5nZXRVcmwoKVxyXG5cdFx0XHRcdHRoaXMuY29udHJvbGxlcigpXHJcblx0XHRcdFx0Ly8gdGhpcy5zdGF0aXN0aWNhbE1vZGVsKClcclxuXHRcdFx0XHQvLyDmtYvor5XnlKhcclxuXHRcdFx0XHRcclxuXHRcdFx0fSwxMDAwKVxyXG5cdFx0XHR0aGlzLnRpbWVySWRzLnB1c2godGltZXJJZDEpXHJcblx0XHRcdFxyXG5cdFx0XHRjb25zdCB0aW1lcklkMiA9IHNldEludGVydmFsKCgpPT4ge1x0XHJcblx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0cGx1cy5ydW50aW1lLnJlc3RhcnQoKTtcclxuXHRcdFx0XHR9LDEwMClcclxuXHRcdFx0XHRcclxuXHRcdFx0fSwxMDAwKjYwKjYwKjQpXHJcblx0XHRcdHRoaXMudGltZXJJZHMucHVzaCh0aW1lcklkMilcclxuXHJcblx0XHRcdHNldEludGVydmFsKCgpID0+IHtcclxuXHRcdFx0XHRwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoJ2FuZHJvaWQub3MuRGVidWcnKTtcclxuXHRcdFx0XHQgICAgICAgICAgY29uc3QgbWVtID0gcGx1cy5hbmRyb2lkLmludm9rZShcclxuXHRcdFx0XHQgICAgICAgICAgICAnYW5kcm9pZC5vcy5EZWJ1ZycsIFxyXG5cdFx0XHRcdCAgICAgICAgICAgICdnZXROYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZSdcclxuXHRcdFx0XHQgICAgICAgICAgKSAvIDEwNDg1NzY7XHJcblx0XHRcdFx0ICAgICAgICAgIGNvbnNvbGUubG9nKG1lbS50b0ZpeGVkKDEpKVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdH0sIDIwMDApXHJcblx0XHRcdFxyXG5cdFx0fSxcclxuXHRcdG9uVW5sb2FkKCkge1xyXG5cdFx0XHQvLyDmuIXnkIbmiYDmnInlrprml7blmahcclxuXHRcdFx0dGhpcy50aW1lcklkcy5mb3JFYWNoKGlkID0+IGNsZWFySW50ZXJ2YWwoaWQpKVxyXG5cdFx0XHR0aGlzLnRpbWVySWRzID0gW11cclxuXHRcdH0sXHJcblx0XHRiZWZvcmVEZXN0cm95KCkge1xyXG5cdFx0XHQvLyDmuIXnkIZXZWJTb2NrZXTov57mjqVcclxuXHRcdFx0aWYgKHRoaXMuc29ja2V0Q2xpZW50KSB7XHJcblx0XHRcdFx0dGhpcy5zb2NrZXRDbGllbnQuY2xvc2UoKVxyXG5cdFx0XHRcdHRoaXMuc29ja2V0Q2xpZW50ID0gbnVsbFxyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0XHQvLyDmuIXnkIbmiYDmnInlrprml7blmahcclxuXHRcdFx0dGhpcy50aW1lcklkcy5mb3JFYWNoKGlkID0+IGNsZWFySW50ZXJ2YWwoaWQpKVxyXG5cdFx0XHR0aGlzLnRpbWVySWRzID0gW11cclxuXHRcdFx0XHJcblx0XHRcdC8vIOa4heeQhuinhuWbvuWIh+aNouWumuaXtuWZqFxyXG5cdFx0XHRpZiAodGhpcy52aWV3U3dpdGNoVGltZXIpIHtcclxuXHRcdFx0XHRjbGVhclRpbWVvdXQodGhpcy52aWV3U3dpdGNoVGltZXIpXHJcblx0XHRcdFx0dGhpcy52aWV3U3dpdGNoVGltZXIgPSBudWxsXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdHVuaVdlYlNvY2tldCgpe1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHR0aGF0LmNvbW1vblVybCA9IHRoYXQuYmFzZUlQICsgJzonICt0aGF0LmJhc2VQb3J0ICsgXCIvXCIgK3RoYXQuYmFzZVVybFxyXG5cdFx0XHRcdHRoYXQuc29ja2V0VXJsID0gXCJ3czovL1wiK3RoYXQuY29tbW9uVXJsK1wiL2xlZC9cIit0aGF0LmJhc2VMZWRJZFxyXG5cdFx0XHRcdC8vIOWIm+W7uldlYlNvY2tldOWunuS+i1xyXG5cdFx0XHRcdCAgICB0aGF0LnNvY2tldENsaWVudCA9IG5ldyBXZWJTb2NrZXRVdGlsKHRoYXQuc29ja2V0VXJsLCB7XHJcblx0XHRcdFx0ICAgICAgLy8g5b+D6Lez6Ze06ZqU77yM6buY6K6kMzDnp5JcclxuXHRcdFx0XHQgICAgICBoZWFydGJlYXRJbnRlcnZhbDogMzAwMDAsXHJcblx0XHRcdFx0ICAgICAgLy8g6YeN6L+e6Ze06ZqU77yM6buY6K6kM+enklxyXG5cdFx0XHRcdCAgICAgIHJlY29ubmVjdEludGVydmFsOiAzMDAwLFxyXG5cdFx0XHRcdCAgICAgIC8vIOacgOWkp+mHjei/nuasoeaVsO+8jC0x6KGo56S65peg6ZmQ6YeN6L+eXHJcblx0XHRcdFx0ICAgICAgbWF4UmVjb25uZWN0QXR0ZW1wdHM6IC0xLFx0XHRcdFx0ICAgICAgXHJcblx0XHRcdFx0ICAgICAgLy8g5raI5oGv5Zue6LCDXHJcblx0XHRcdFx0ICAgICAgb25NZXNzYWdlOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0ICAgICAgICB0cnkge1xyXG5cdFx0XHRcdCAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XHRcdFx0XHQgICAgICAgICAgXHJcblx0XHRcdFx0ICAgICAgICAgIHRoYXQuc2hvd0RhdGUoZGF0YSlcclxuXHRcdFx0XHQgICAgICAgICAgLy8g5aSE55CG5raI5oGvLi4uXHJcblx0XHRcdFx0ICAgICAgICB9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ino+aekOa2iOaBr+Wksei0pScsIGUpO1xyXG5cdFx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdCAgICAgIH0sXHJcblx0XHRcdFx0ICAgICAgLy8g6L+e5o6l5omT5byA5Zue6LCDXHJcblx0XHRcdFx0ICAgICAgb25PcGVuOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdCAgdGhhdC50aW1lT3V0ID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0ICB0aGF0LnRpbWVzID0gMFxyXG5cdFx0XHRcdCAgICAgICAgY29uc29sZS5sb2coJ1dlYlNvY2tldOW3sui/nuaOpScsIHJlcyk7XHRcclxuXHRcdFx0XHQgICAgICB9LFxyXG5cdFx0XHRcdCAgICAgIC8vIOi/nuaOpemUmeivr+Wbnuiwg1xyXG5cdFx0XHRcdCAgICAgIG9uRXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdCAgICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V06ZSZ6K+vJywgZXJyb3IpO1xyXG5cdFx0XHRcdCAgICAgIH0sXHJcblx0XHRcdFx0ICAgICAgLy8g6L+e5o6l5YWz6Zet5Zue6LCDXHJcblx0XHRcdFx0ICAgICAgb25DbG9zZTogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQgIHRoYXQudGltZU91dCA9IHRydWVcclxuXHRcdFx0XHRcdFx0ICB0aGF0LnRpbWVzID0gdGhhdC50aW1lcysxXHJcblx0XHRcdFx0XHRcdCAgdGhhdC5pbmZvVHlwZSA9IDBcclxuXHRcdFx0XHQgICAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXTlt7LlhbPpl60nLCByZXMpO1xyXG5cdFx0XHRcdCAgICAgIH0sXHJcblx0XHRcdFx0ICAgICAgLy8g6YeN6L+e5Zue6LCDXHJcblx0XHRcdFx0ICAgICAgb25SZWNvbm5lY3Q6IChpbmZvKSA9PiB7XHJcblx0XHRcdFx0ICAgICAgICBjb25zb2xlLmxvZyhgV2ViU29ja2V06YeN6L+eKCR7aW5mby5hdHRlbXB0c30vJHtpbmZvLm1heEF0dGVtcHRzfSlgKTtcclxuXHRcdFx0XHQgICAgICB9XHJcblx0XHRcdFx0ICAgIH0pO1xyXG5cdFx0XHRcdCAgICBcclxuXHRcdFx0XHQgICAgLy8g5bu656uL6L+e5o6lXHJcblx0XHRcdFx0ICAgIHRoYXQuc29ja2V0Q2xpZW50LmNvbm5lY3QoKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5Y+R6YCB5raI5oGvXHJcblx0XHRcdCAgICBzZW5kTWVzc2FnZShjb250ZW50KSB7XHJcblx0XHRcdCAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XHJcblx0XHRcdCAgICAgICAgdHlwZTogJ2NoYXQnLFxyXG5cdFx0XHQgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXHJcblx0XHRcdCAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXHJcblx0XHRcdCAgICAgIH07XHJcblx0XHRcdCAgICAgIFxyXG5cdFx0XHQgICAgICB0aGlzLnNvY2tldENsaWVudC5zZW5kKG1lc3NhZ2UpXHJcblx0XHRcdCAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG5cdFx0XHQgICAgICAgICAgY29uc29sZS5sb2coJ+a2iOaBr+WPkemAgeaIkOWKnycpO1xyXG5cdFx0XHQgICAgICAgIH0pXHJcblx0XHRcdCAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuXHRcdFx0ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+a2iOaBr+WPkemAgeWksei0pScsIGVycm9yKTtcclxuXHRcdFx0ICAgICAgICB9KTtcclxuXHRcdFx0ICAgIH0sXHJcblx0XHRcdHdlYlNvY2tlckluaXQoKXtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXM7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0aWYodGhhdC5iYXNlSVAgPT09ICcnICYmIHRoYXQuYmFzZVBvcnQgPT09ICcnICYmIHRoYXQuYmFzZVVybCA9PT0nJyApe1xyXG5cdFx0XHRcdFx0dGhhdC50aW1lT3V0ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0dGhhdC50aW1lcyA9IHRoYXQudGltZXMrMVxyXG5cdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDBcclxuXHRcdFx0XHRcdHJldHVybiA7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdHRoYXQuY29tbW9uVXJsID0gdGhhdC5iYXNlSVAgKyAnOicgK3RoYXQuYmFzZVBvcnQgKyBcIi9cIiArdGhhdC5iYXNlVXJsXHJcblx0XHRcdFx0bGV0IHNvY2tldFVybCA9IFwid3M6Ly9cIit0aGF0LmNvbW1vblVybCtcIi9sZWQvXCIrdGhhdC5iYXNlTGVkSWRcclxuXHRcdFx0XHRcdFx0Ly8gc29ja2V0VXJsID0gXCJ3czovLzEwLjAuMTAwLjE1MDo4MDgwL2d0Y3R1L2xlZC8xMTNcIlxyXG5cdFx0XHRcdGNvbnN0IHdzID0gbmV3IFdlYlNvY2tldENsaWVudChzb2NrZXRVcmwpO1xyXG5cdFx0XHRcdHdzLmNvbm5lY3QoKVxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKHdzKVx0XHRcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0d3Mub25jbG9zZSgoKSA9PntcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0d3Mub25tZXNzYWdlKChtc2cpPT57XHJcblx0XHRcdFx0IHRoYXQudGltZU91dCA9IGZhbHNlXHJcblx0XHRcdFx0IGxldCBkYXRhID0gSlNPTi5wYXJzZShtc2cuZGF0YSlcclxuXHRcdFx0XHQgdGhhdC5zaG93RGF0ZShkYXRhKVxyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzaG93RGF0ZShkYXRhKXtcclxuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdGlmKGRhdGEudHlwZSA9PT0gXCJkZWZhdWx0XCIpe1xyXG5cdFx0XHRcdFx0Ly8g6K6+572u5qCH6K6w77yM6KGo56S65pWw5o2u5bey5pu05paw77yM6ZyA6KaB6YeN5paw5riy5p+T5Zu+6KGoXHJcblx0XHRcdFx0XHR0aGF0Lm5lZWRVcGRhdGVDaGFydHMgPSB0cnVlXHJcblx0XHRcdFx0XHR0aGF0LmNoYXJ0c0RhdGEuUGllLnNlcmllc1swXS5kYXRhID0gZGF0YS5waWVcclxuXHRcdFx0XHRcdHRoYXQuYmFzZUluZm8uc3RvY2tDb3VudCA9IGRhdGEuc3RvY2tDdW50XHJcblx0XHRcdFx0XHR0aGF0LmJhc2VJbmZvLmVtcHR5Q291bnQgPSBkYXRhLmVtcHR5Q291bnRcclxuXHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ubm9uZUNvdW50ID1kYXRhLm5vbmVDb3VudFxyXG5cdFx0XHRcdFx0dGhhdC5iYXNlSW5mby51c2VkID0gZGF0YS51c2VkXHJcblx0XHRcdFx0XHR0aGF0LmJhc2VJbmZvLnVzZWRQciA9IGRhdGEudXNlZFByXHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5MaW5lLmNhdGVnb3JpZXMgPSBbXHJcblx0XHRcdFx0XHRcdHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTEpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMTApLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOSksdGhhdC5nZXREYXRlRm9ybWF0KC04KSxcclxuXHRcdFx0XHRcdFx0dGhhdC5nZXREYXRlRm9ybWF0KC03KSx0aGF0LmdldERhdGVGb3JtYXQoLTYpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNSksdGhhdC5nZXREYXRlRm9ybWF0KC00KSxcclxuXHRcdFx0XHRcdFx0dGhhdC5nZXREYXRlRm9ybWF0KC0zKSx0aGF0LmdldERhdGVGb3JtYXQoLTIpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMSksdGhhdC5nZXREYXRlRm9ybWF0KDApLF1cclxuXHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5MaW5lLnNlcmllcyA9IGRhdGEucm93c1xyXG5cdFx0XHRcdFx0dGhhdC5jYWxlbmRhciA9IGRhdGEueWVhciArIFwi5bm0XCIgKyBkYXRhLm1vbnRoICsgXCLmnIhcIiArIGRhdGEuZGF5ICsgXCLml6UgXCIgKyBkYXRhLmhvdXIgKyBcIjpcIiArIGRhdGEubWludXRlICsgXCI6XCIgKyBkYXRhLnNlY29uZCArIFwiIFwiICsgZGF0YS53ZWVrXHJcblx0XHRcdFx0XHR0aGF0LmN1cnJEYXRlID0gZGF0YS55ZWFyICsgXCIvXCIgKyBkYXRhLm1vbnRoICsgXCIvXCIgKyBkYXRhLmRheVxyXG5cdFx0XHRcdFx0dGhhdC5sb2NMaXN0ID0gZGF0YS5pbnZlbnRvcnlEYXRhXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQub2xkSG91cnMgPSBkYXRhLmhvdXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5vbGRNaW4gPSBkYXRhLm1pbnV0ZVxyXG5cdFx0XHRcdH1lbHNlIGlmKGRhdGEudHlwZSA9PT0gXCJlcnJvclwiKXtcclxuXHRcdFx0XHRcdGlmIChkYXRhLmVyck1zZyAmJiBkYXRhLmVyck1zZyAhPT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHR2YXIgZXJyb3JJbmZvID0gZGF0YS5lcnJNc2dcclxuXHRcdFx0XHRcdFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMSkge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAzXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5YW25LuW5L+h5oGvXCIgXHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5byC5bi4XCJcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDJcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5YW25LuW5L+h5oGvXCJcclxuXHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5byC5bi4XCJcclxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5lcnJvciA9IGVycm9ySW5mb1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMSkge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fWVsc2UgaWYoZGF0YS50eXBlID09PSBcInRhc2tcIil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCBpZiAoZGF0YS50YXNrTGlzdCAmJiBkYXRhLnRhc2tMaXN0ICE9PSBcIlwiICYmIGRhdGEudGFza0xpc3QubGVuZ3RoICE9MCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHRcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0IFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHQvLyBpbmZvVHlwZTE65Y+q5pyJ5ouj5paZ562J5L+h5oGvXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdHRoYXQuaW5mb1R5cGUgPSAxXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdGlmIChkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTAxKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhajmnb/lh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTAzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfmi6Pmlpnlh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTA3KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnm5jngrnlh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5YWl5bqTJ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHR9IGVsc2UgaWYoZGF0YS50YXNrTGlzdFswXS5pb1R5cGUgPT09IDEwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlhaXlupMnXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTEwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTA0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflubbmnb/lh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH1lbHNlIGlmKGRhdGEudGFza0xpc3RbMF0uaW9UeXBlID09PSA1NCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5bm25p2/5YWl5bqTJ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdHRoYXQuaW5mb1RleHQuYmFyY29kZSA9IGRhdGEudGFza0xpc3RbMF0uYmFyY29kZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHR0aGF0LmluZm9UZXh0LndvcmtObyA9IGRhdGEudGFza0xpc3RbMF0ud29ya05vXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdHRoYXQuaW5mb1RleHQuc291cmNlTG9jTm8gPSBkYXRhLnRhc2tMaXN0WzBdLnNvdXJjZUxvY05vXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdHRoYXQuaW5mb1RleHQuc3RhTm8gPSBkYXRhLnRhc2tMaXN0WzBdLnN0YU5vXHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdHRoYXQuc3dpcGVyTGlzdCA9IGRhdGEudGFza0xpc3RbMF0ubWF0RHRvc1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHQvLyB0aGF0LmluZm9UZXh0Lm1hdG5yID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYXRuclxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHQvLyB0aGF0LmluZm9UZXh0LnNwZWNzID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5zcGVjc1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHQvLyB0aGF0LmluZm9UZXh0Lm1ha254ID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYWtueFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHQvLyB0aGF0LmluZm9UZXh0LmNvdW50ID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5jb3VudFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgfSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0IFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMiB8fCB0aGF0LmluZm9UeXBlID09IDMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0IFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0IFx0dGhhdC5pbmZvVHlwZSA9IDBcclxuXHRcdFx0XHRcdFx0XHRcdFx0IH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0YXRpc3RpY2FsTW9kZWwoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbG9jRGV0bC9wZGEvc3RhdGlzdGljYWxNb2RlbFwiLFxyXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzLmRhdGEpXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5sb2NMaXN0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGdldFVybCgpIHtcclxuXHRcdFx0XHR0aGlzLmNvbW1vblVybCA9IHRoaXMuYmFzZUh0dHAgKyB0aGlzLmJhc2VJUCArICc6JyArdGhpcy5iYXNlUG9ydCArIFwiL1wiICt0aGlzLmJhc2VVcmxcdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRTZXJ2ZXJEYXRhKCkge1xyXG5cdFx0XHRcdC8vIOWPquWcqOaVsOaNruWPmOWMluaXtuaJjei/m+ihjOa3seaLt+i0nVxyXG5cdFx0XHRcdGlmICh0aGlzLm5lZWRVcGRhdGVDaGFydHMpIHtcclxuXHRcdFx0XHRcdHRoaXMuY2hhcnRzRGF0YUxpbmUxPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jaGFydHNEYXRhLkxpbmUpKVxyXG5cdFx0XHRcdFx0dGhpcy5jaGFydHNEYXRhUGllMj1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY2hhcnRzRGF0YS5QaWUpKVxyXG5cdFx0XHRcdFx0dGhpcy5uZWVkVXBkYXRlQ2hhcnRzID0gZmFsc2VcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOiOt+WPlumUmeivr+S/oeaBr1xyXG5cdFx0XHRnZXRJbmZvMigpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0geWNxZGF0YS5kYXRhSW5mbzJcclxuXHRcdFx0XHR2YXJcdHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XHJcblx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQvLyBpbmZvVHlwZTE65Y+q5pyJ5ouj5paZ562J5L+h5oGvXHJcblx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMVxyXG5cdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAxKSB7XHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5YWo5p2/5Ye65bqTJ1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5qOA5paZ5Ye65bqTJ1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTA3KSB7XHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn55uY54K55Ye65bqTJ1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+WFpeW6kydcclxuXHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwKSB7XHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5YWl5bqTJ1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTEwKSB7XHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5Ye65bqTJ1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5iYXJjb2RlID0gcmVzLmRhdGFbMF0uYmFyY29kZVxyXG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC53b3JrTm8gPSByZXMuZGF0YVswXS53b3JrTm9cclxuXHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuc291cmNlTG9jTm8gPSByZXMuZGF0YVswXS5zb3VyY2VMb2NOb1xyXG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5zdGFObyA9IHJlcy5kYXRhWzBdLnN0YU5vXHJcblx0XHRcdFx0XHR0aGF0LnN3aXBlckxpc3QgPSByZXMuZGF0YVswXS5tYXREdG9zXHJcblx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0Lm1hdG5yID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYXRuclxyXG5cdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5zcGVjcyA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uc3BlY3NcclxuXHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQubWFrbnggPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1ha254XHJcblx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LmNvdW50ID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5jb3VudFxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0RXJyb3IyICgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0geWNxZGF0YS5kYXRhRXJyb3IyXHJcblx0XHRcdFx0dmFyXHRyZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xyXG5cdFx0XHRcdFx0dmFyIGVycm9ySW5mbyA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAzXHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuWFtuS7luS/oeaBr1wiIFxyXG5cdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlvILluLhcIlxyXG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXHJcblx0XHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDJcclxuXHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuWFtuS7luS/oeaBr1wiXHJcblx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlvILluLhcIlxyXG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5lcnJvciA9IGVycm9ySW5mb1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XHJcblx0XHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGdldEluZm8oKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGVkXCIsXHJcblx0XHRcdFx0XHRtZXRob2Q6XCJHRVRcIixcclxuXHRcdFx0XHRcdGRhdGE6IHtsZWRJZDp0aGF0LmJhc2VMZWRJZH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVPdXQgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVzID0gMFxyXG5cdFx0XHRcdFx0XHR2YXJcdHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdC8vIGluZm9UeXBlMTrlj6rmnInmi6PmlpnnrYnkv6Hmga9cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMVxyXG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwMSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhajmnb/lh7rlupMnXHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+ajgOaWmeWHuuW6kydcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDcpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn55uY54K55Ye65bqTJ1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5YWl5bqTJ1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+epuuaJmOWFpeW6kydcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMTApIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5Ye65bqTJ1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmJhcmNvZGUgPSByZXMuZGF0YVswXS5iYXJjb2RlXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC53b3JrTm8gPSByZXMuZGF0YVswXS53b3JrTm9cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnNvdXJjZUxvY05vID0gcmVzLmRhdGFbMF0uc291cmNlTG9jTm9cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnN0YU5vID0gcmVzLmRhdGFbMF0uc3RhTm9cclxuXHRcdFx0XHRcdFx0XHR0aGF0LnN3aXBlckxpc3QgPSByZXMuZGF0YVswXS5tYXREdG9zXHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5tYXRuciA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWF0bnJcclxuXHRcdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnNwZWNzID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5zcGVjc1xyXG5cdFx0XHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQubWFrbnggPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1ha254XHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5jb3VudCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uY291bnRcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbChlcnIpIHtcclxuXHRcdFx0XHRcdFx0dGhhdC50aW1lT3V0ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVzID0gdGhhdC50aW1lcysxXHJcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0RXJyb3IoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGVkL2Vycm9yXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB7bGVkSWQ6dGhhdC5iYXNlTGVkSWR9LFxyXG5cdFx0XHRcdFx0bWV0aG9kOlwiR0VUXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVPdXQgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVzID0gMFxyXG5cdFx0XHRcdFx0XHR2YXJcdHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBlcnJvckluZm8gPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAzXHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIiBcclxuXHRcdFx0XHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDJcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIlxyXG5cdFx0XHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5lcnJvciA9IGVycm9ySW5mb1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbChlcnIpIHtcclxuXHRcdFx0XHRcdFx0dGhhdC50aW1lT3V0ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOaOp+WItuWZqFxyXG5cdFx0XHRjb250cm9sbGVyKCkge1xyXG4gICAgLy8g5aaC5p6c6KeG5Zu+5YiH5o2i5q2j5Zyo6L+b6KGM5Lit77yM5LiN6KaB5Lit5patXHJcbiAgICBpZiAodGhpcy52aWV3U3dpdGNoSW5Qcm9ncmVzcykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8g5riF6Zmk5LmL5YmN55qE6KeG5Zu+5YiH5o2i5a6a5pe25ZmoXHJcbiAgICBpZiAodGhpcy52aWV3U3dpdGNoVGltZXIpIHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy52aWV3U3dpdGNoVGltZXIpXHJcbiAgICAgICAgdGhpcy52aWV3U3dpdGNoVGltZXIgPSBudWxsXHJcbiAgICB9XHJcbiAgICBcclxuICAgIHN3aXRjaCh0aGlzLmluZm9UeXBlKSB7XHJcbiAgICAgICAgLy8g5pyJ5L+h5oGvIOS9hiDmsqHmnInplJnor6/kv6Hmga9cclxuICAgICAgICBjYXNlIDA6IFxyXG4gICAgICAgICAgICBpZiAodGhpcy5lcnJvckluZm9WaWV3U2hvdykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob21lVmlld1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruWPpuS4gOS4quWumuaXtuWZqOadpemHjee9rui/m+ihjOS4reagh+W/l1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTd2l0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbmZvVmlld1Nob3cpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld1N3aXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmZvVmlld1Nob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob21lVmlld1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruWPpuS4gOS4quWumuaXtuWZqOadpemHjee9rui/m+ihjOS4reagh+W/l1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTd2l0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5lcnJvckluZm9WaWV3U2hvdyAmJiB0aGlzLmluZm9WaWV3U2hvdykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgIHRoaXMudmlld1N3aXRjaFRpbWVyID0gc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9tZVZpZXdTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9tZU1vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICAvLyDorr7nva7lj6bkuIDkuKrlrprml7blmajmnaXph43nva7ov5vooYzkuK3moIflv5dcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICAgICAgfSwxMDAwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBjYXNlIDE6IFxyXG4gICAgICAgICAgICBpZiAodGhpcy5ob21lVmlld1Nob3cpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld1N3aXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ob21lVmlld1Nob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmZvVmlld1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruWPpuS4gOS4quWumuaXtuWZqOadpemHjee9rui/m+ihjOS4reagh+W/l1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTd2l0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5lcnJvckluZm9WaWV3U2hvdykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmZvVmlld1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruWPpuS4gOS4quWumuaXtuWZqOadpemHjee9rui/m+ihjOS4reagh+W/l1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTd2l0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgLy8g5pyJ5L+h5oGvIOS4lCDmnInplJnor6/kv6Hmga9cclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhvbWVWaWV3U2hvdykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhvbWVWaWV3U2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdTd2l0Y2hUaW1lciA9IHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruWPpuS4gOS4quWumuaXtuWZqOadpemHjee9rui/m+ihjOS4reagh+W/l1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTd2l0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbmZvVmlld1Nob3cpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld1N3aXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmZvVmlld1Nob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICAvLyDorr7nva7lj6bkuIDkuKrlrprml7blmajmnaXph43nva7ov5vooYzkuK3moIflv5dcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICAgICAgfSwxMDAwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAvLyDmnInkv6Hmga8g5LiUIOaciemUmeivr+S/oeaBr1xyXG4gICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgaWYgKHRoaXMuaG9tZVZpZXdTaG93KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdTd2l0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaG9tZVZpZXdTaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuaG9tZU1vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cclxuICAgICAgICAgICAgICAgIHRoaXMudmlld1N3aXRjaFRpbWVyID0gc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvckluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6K6+572u5Y+m5LiA5Liq5a6a5pe25Zmo5p2l6YeN572u6L+b6KGM5Lit5qCH5b+XXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld1N3aXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICAgICAgICAgIH0sMTAwMClcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmluZm9WaWV3U2hvdykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3U3dpdGNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluZm9WaWV3U2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdTd2l0Y2hUaW1lciA9IHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruWPpuS4gOS4quWumuaXtuWZqOadpemHjee9rui/m+ihjOS4reagh+W/l1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTd2l0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgICAgICB9LDEwMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbn0sXHJcblx0XHRcdC8vIOS4u+Wxj+W5lVxyXG5cdFx0XHRoYW5kbGUodHlwZSkge1xyXG5cdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gIXRoaXMuaG9tZVZpZXdTaG93XHJcblx0XHRcdFx0dGhpcy5tb2RlQ2xhc3MgPSB0eXBlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOaLo+aWmVxyXG5cdFx0XHRoYW5kbGUxKHR5cGUpIHtcclxuXHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9ICF0aGlzLmluZm9WaWV3U2hvd1xyXG5cdFx0XHRcdHRoaXMubW9kZUNsYXNzID0gdHlwZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDlvILluLhcclxuXHRcdFx0aGFuZGxlMih0eXBlKSB7XHJcblx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9ICF0aGlzLmVycm9ySW5mb1ZpZXdTaG93XHJcblx0XHRcdFx0dGhpcy5tb2RlQ2xhc3MgPSB0eXBlXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOmFjee9rlxyXG5cdFx0XHRlamVjdGVkICgpIHtcclxuXHRcdFx0XHR0aGlzLmVqZWN0U2hvdyA9IHRydWVcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5Y+W5raI6YWN572uXHJcblx0XHRcdGVqZWN0Q2xvc2UoKSB7XHJcblx0XHRcdFx0dGhpcy5lamVjdFNob3cgPSBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDnoa7orqTphY3nva5cclxuXHRcdFx0ZWplY3RDb25maXJtKCkge1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUlwJywgdGhpcy5iYXNlSVApO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUxlZElkJywgdGhpcy5iYXNlTGVkSWQpO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZVBvcnQnLHRoaXMuYmFzZVBvcnQpO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUNybklkJyx0aGlzLmJhc2VDcm5JZCk7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdVUFJPSicsdGhpcy5iYXNlVXJsKTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3dtc1VybCcsdGhpcy53bXNVcmwpO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnd21zUG9ydCcsdGhpcy53bXNQb3J0KTtcclxuXHRcdFx0XHR0aGlzLmdldFVybCgpXHJcblx0XHRcdFx0dGhpcy5lamVjdFNob3cgPSBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDml6XljoYg5pyN5Yqh5ZmoXHJcblx0XHRcdGdldERhdGUyKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2RhdGVcIixcclxuXHRcdFx0XHRcdG1ldGhvZDpcIkdFVFwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhLmRhdGFcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdC8vIOaXpeWOhlxyXG5cdFx0XHRnZXREYXRlKCkge1xyXG5cdFx0XHRcdHZhciBkdCA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdFx0dmFyIHllYXIsbW9udGgsZGF5LGhvdXJzLG1pbnV0ZXMsc2Vjb25kcyx3ZWVrc1xyXG5cdFx0XHRcdHllYXIgPSBkdC5nZXRGdWxsWWVhcigpO1xyXG5cdFx0XHRcdG1vbnRoID0gKGR0LmdldE1vbnRoKCkrMSkgPCAxMCA/ICcwJysgKGR0LmdldE1vbnRoKCkrMSkgOiAoZHQuZ2V0TW9udGgoKSsxKTtcclxuXHRcdFx0XHRkYXkgPSBkdC5nZXREYXRlKCkgPCAxMCA/ICcwJytkdC5nZXREYXRlKCkgOiBkdC5nZXREYXRlKCk7XHJcblx0XHRcdFx0aG91cnMgPSBkdC5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkdC5nZXRIb3VycygpIDogZHQuZ2V0SG91cnMoKTtcclxuXHRcdFx0XHRtaW51dGVzID0gZHQuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkdC5nZXRNaW51dGVzKCkgOiBkdC5nZXRNaW51dGVzKCk7XHJcblx0XHRcdFx0c2Vjb25kcyA9IGR0LmdldFNlY29uZHMoKSA8IDEwID8gJzAnICsgZHQuZ2V0U2Vjb25kcygpIDogZHQuZ2V0U2Vjb25kcygpOyBcclxuXHRcdFx0XHR3ZWVrcyA9IGR0LmdldERheSgpOyBcclxuXHRcdFx0XHRzd2l0Y2ggKHdlZWtzKSB7XHJcblx0XHRcdFx0XHRjYXNlIDA6IHdlZWtzID0gXCLmmJ/mnJ/ml6VcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDE6IHdlZWtzID0gXCLmmJ/mnJ/kuIBcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDI6IHdlZWtzID0gXCLmmJ/mnJ/kuoxcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDM6IHdlZWtzID0gXCLmmJ/mnJ/kuIlcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDQ6IHdlZWtzID0gXCLmmJ/mnJ/lm5tcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIDU6IHdlZWtzID0gXCLmmJ/mnJ/kupRcIjsgYnJlYWs7XHJcblx0XHRcdFx0XHRkZWZhdWx0IDogd2Vla3MgPSBcIuaYn+acn+WFrVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNhbGVuZGFyID0geWVhciArIFwi5bm0XCIgKyBtb250aCArIFwi5pyIXCIgKyBkYXkgKyBcIuaXpSBcIiArIGhvdXJzICsgXCI6XCIgKyBtaW51dGVzICsgXCI6XCIgKyBzZWNvbmRzICsgXCIgXCIgKyB3ZWVrc1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXREYXRlRm9ybWF0KHZhbHVlKSB7XHJcblx0XHRcdFx0dmFyIGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJEYXRlKTsvLyDojrflj5blvZPliY3ml7bpl7RcclxuXHRcdFx0XHRkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyB2YWx1ZSk7Ly8g6K6+572u5aSp5pWwIC0xIOWkqVxyXG5cdFx0XHRcdHZhciBtID0gZGF0ZS5nZXRNb250aCgpICsgMVxyXG5cdFx0XHRcdHZhciBkID0gZGF0ZS5nZXREYXRlKClcclxuXHRcdFx0XHR2YXIgbmV3RGF0ZSA9IG0gKyAnLScgKyBkXHJcblx0XHRcdFx0cmV0dXJuIG5ld0RhdGVcclxuXHRcdFx0fSxcclxuXHRcdFx0LyoqKioqKioqKioqKioqKiDmipjnur/lm74gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblx0XHRcdGluaXRsaW5lQ2hhcnQoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbGluZS9jaGFydHNcIixcclxuXHRcdFx0XHRcdG1ldGhvZDonR0VUJyxcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0LyoqKioqKioqKioqKioqKiDppbzlm74gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblx0XHRcdGluaXRQaWVDaGFydCgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sb2MvcmVwXCIsXHJcblx0XHRcdFx0XHRtZXRob2Q6J0dFVCcsXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5jb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmNoYXJ0c0RhdGEuUGllLnNlcmllc1swXS5kYXRhID0gcmVzLmRhdGEucGllXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby5zdG9ja0NvdW50ID0gcmVzLmRhdGEuc3RvY2tDdW50XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby5lbXB0eUNvdW50ID0gcmVzLmRhdGEuZW1wdHlDb3VudFxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ubm9uZUNvdW50ID0gcmVzLmRhdGEubm9uZUNvdW50XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby51c2VkID0gcmVzLmRhdGEudXNlZFxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8udXNlZFByID0gcmVzLmRhdGEudXNlZFByXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRPdGhlcigpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9vdGhlclwiLFxyXG5cdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRjcm5JZDogdGhhdC5iYXNlQ3JuSWQsIFxyXG5cdFx0XHRcdFx0XHRsZWRJZDogdGhhdC5iYXNlTGVkSWQsXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzdWx0KTtcclxuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby54RGlzdGFuY2UgPSByZXMuZGF0YS54RGlzdGFuY2VcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmJhc2VJbmZvLnlEaXN0YW5jZSA9IHJlcy5kYXRhLnlEaXN0YW5jZVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ueER1cmF0aW9uID0gcmVzLmRhdGEueER1cmF0aW9uXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby55RHVyYXRpb24gPSByZXMuZGF0YS55RHVyYXRpb25cclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuY29kZSA9PT0gNDAzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvL+ajgOa1i+W9k+WJjeW5s+WPsO+8jOWmguaenOaYr+WuieWNk+WImeWQr+WKqOWuieWNk+abtOaWsFxyXG5cdFx0XHRnZXRWZXJzaW9uKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHR1bmkuZ2V0U3lzdGVtSW5mbyh7XHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChyZXMucGxhdGZvcm0gPT0gXCJhbmRyb2lkXCIpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGF0LkFuZHJvaWRDaGVja1VwZGF0ZSgpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5BbmRyb2lkQ2hlY2tVcGRhdGUoKTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g6I635Y+W5b2T5YmN54mI5pys5Y+3XHJcblx0XHRcdEFuZHJvaWRDaGVja1VwZGF0ZSgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXM7XHJcblx0XHRcdFx0cGx1cy5ydW50aW1lLmdldFByb3BlcnR5KHBsdXMucnVudGltZS5hcHBpZCwgKHdndGluZm8pID0+IHtcclxuXHRcdFx0XHRcdHRoYXQudmVyc2lvbiA9IHdndGluZm8udmVyc2lvbiAvL+WuouaIt+err+eJiOacrOWPt1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0dGhhdC5nZXRVcGRhdGVWZXJzaW9uKClcclxuXHRcdFx0XHR9LDEwMClcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5qCh6aqM54mI5pysXHJcblx0XHRcdGdldFVwZGF0ZVZlcnNpb24oKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXHJcblx0XHRcdFx0bGV0IHR5cGUgPSAxXHJcblx0XHRcdFx0aWYgKHRoYXQuYmFzZVVybCA9PSAnaHR0cDovL3VuZGVmaW5lZDp1bmRlZmluZWQvdW5kZWZpbmVkJykge1xyXG5cdFx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IHdtcyA9ICdodHRwOi8vJysgdGhhdC5iYXNlSVAgKyAnOicgK3RoYXQud21zUG9ydCArIFwiL1wiICt0aGF0Lndtc1VybFxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKHdtcylcclxuXHRcdFx0XHRsZXQgdXJsID0gd21zICsgJy9hcHBWZXJzaW9uL2NoZWNrVXBkYXRlLycgKyB0aGF0LnZlcnNpb24gKyAnLycgKyB0eXBlXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB1cmwsXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YSkge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuZmlsZW5hbWUgPSByZXMuZGF0YS5wYXRoXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5kaWFsb2dDb250ZW50ID0gJ+WPkeeOsOaWsOeJiOacrDonICsgcmVzLmRhdGEudmVyc2lvbiArICcsIOaYr+WQpueri+WNs+abtOaWsCdcclxuXHRcdFx0XHRcdFx0XHR0aGF0LiRyZWZzLnVwVmVyc2lvbi5vcGVuKClcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiByZXMubXNnLFxyXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogJ3RvcCdcclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGRpYWxvZ0NvbmZpcm0oKSB7XHJcblx0XHRcdFx0dGhpcy4kcmVmcy51cFZlcnNpb24uY2xvc2UoKVxyXG5cdFx0XHRcdHRoaXMuZG93bldndCgpXHJcblx0XHRcdH0sXHJcblx0XHRcdGRpYWxvZ0Nsb3NlKCkge1xyXG5cdFx0XHRcdHRoaXMuJHJlZnMudXBWZXJzaW9uLmNsb3NlKClcclxuXHRcdFx0fSxcclxuXHRcdFx0ZG93bldndCgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXM7XHJcblx0XHRcdFx0Y29uc3Qgd21zID0gJ2h0dHA6Ly8nKyB0aGF0LmJhc2VJUCArICc6JyArdGhhdC53bXNQb3J0ICsgXCIvXCIgK3RoYXQud21zVXJsXHJcblx0XHRcdFx0Y29uc3QgZG93bmxvYWRVcmwgPSB3bXMgKyBcIi9hcHBWZXJzaW9uL2Rvd25sb2FkQXBwL1wiICsgdGhhdC5maWxlbmFtZVxyXG5cdFx0XHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdFx0XHR0aXRsZTogJ+abtOaWsOS4reKApuKApidcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdGNvbnN0IGRvd25sb2FkVGFzayA9IHVuaS5kb3dubG9hZEZpbGUoeyAvL+aJp+ihjOS4i+i9vVxyXG5cdFx0XHRcdFx0dXJsOiBkb3dubG9hZFVybCwgLy/kuIvovb3lnLDlnYBcclxuXHRcdFx0XHRcdHRpbWVvdXQ6IDEwMDAgKiAzMCwgLy8zMOenkui2heaXtuaXtumXtFxyXG5cdFx0XHRcdFx0c3VjY2VzczogZG93bmxvYWRSZXN1bHQgPT4geyAvL+S4i+i9veaIkOWKn1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkb3dubG9hZFJlc3VsdCk7XHJcblx0XHRcdFx0XHRcdHRoYXQuc2hvd2Rvd25MaW5lID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0XHRcdGlmIChkb3dubG9hZFJlc3VsdC5zdGF0dXNDb2RlID09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogJ+abtOaWsOaIkOWKn++8jOehruWumueOsOWcqOmHjeWQr+WQl++8nycsXHJcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogJ+mHjeWQrycsXHJcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtQ29sb3I6ICcjRUU4RjU3JyxcclxuXHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzLmNvbmZpcm0gPT0gdHJ1ZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBsdXMucnVudGltZS5pbnN0YWxsKCAvL+WuieijhVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZG93bmxvYWRSZXN1bHQudGVtcEZpbGVQYXRoLCB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvcmNlOiB0cnVlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24ocmVzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHV0aWxzLnNob3dUb2FzdCgn5pu05paw5oiQ5Yqf77yM6YeN5ZCv5LitJyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBsdXMucnVudGltZS5yZXN0YXJ0KCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuc2hvd2Rvd25MaW5lID0gZmFsc2VcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOifor7flhYjkuIrkvKDlronoo4XljIUnLFxyXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogJ2Vycm9yJ1xyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiBlcnIgPT4ge1xyXG5cdFx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHRcdFx0dGhhdC5zaG93ZG93bkxpbmUgPSBmYWxzZVxyXG5cdFx0XHRcdFx0XHR0aGF0LiR1LnRvYXN0KGRvd25sb2FkUmVzdWx0LmVyck1zZylcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRjb21wbGV0ZTogY29tID0+IHtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGNvbSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHJcblx0XHRcdFx0Ly8g5LiL6L296L+b5bqmXHJcblx0XHRcdFx0ZG93bmxvYWRUYXNrLm9uUHJvZ3Jlc3NVcGRhdGUocmVzID0+IHtcclxuXHRcdFx0XHRcdHRoYXQuZG93bmxvYWROdW0gPSByZXMucHJvZ3Jlc3NcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfkuIvovb3ov5vluqYnICsgdGhhdC5kb3dubG9hZE51bSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0XHRcclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG5cdC8qIEBpbXBvcnQgdXJsKFwiLi4vLi4vc3RhdGljL2Nzcy9jb21tb24uY3NzXCIpOyAqL1xyXG5cdEBpbXBvcnQgdXJsKFwiaG9tZS5jc3NcIik7XHJcblx0Lyog5YiXICovXHJcblx0LmZsZXgtY29sIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdH1cclxuXHQvKiDooYwgKi9cclxuXHQuZmxleC1yb3cge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0fVxyXG5cdFxyXG5cdC5jb250YWluZXJ7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMwMDE2M0U7XHJcblx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFxyXG5cdH1cclxuXHQvKiDkuLvop4blm74gKi9cclxuXHQuaG9tZS12aWV3IHtcclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9iYWNrZ3JvdW5kLnBuZyk7XHJcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDEwMHZ3IDEwMHZoO1xyXG5cdH1cclxuXHQuaG9tZS1yaWdodCB7XHJcblx0XHR3aWR0aDogNTB2dztcclxuXHRcdGhlaWdodDogODl2aDtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6IGNhZGV0Ymx1ZTsgKi9cclxuXHR9XHJcblx0LmhvbWUtcmlnaHQtYm94IHtcclxuXHRcdHdpZHRoOiA5OCU7XHJcblx0XHRoZWlnaHQ6IDk4JTtcclxuXHR9XHJcblx0LmhlYWQge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0aGVpZ2h0OiAxMXZoO1xyXG5cdFx0Zm9udC1zaXplOjR2dztcclxuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgwLjcpO1xyXG5cdH1cclxuXHQudGltZS10b29scyB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRyaWdodDogMiU7XHJcblx0XHR0b3A6IDIlO1xyXG5cdFx0Zm9udC1zaXplOjF2dztcclxuXHRcdHRyYW5zZm9ybTogc2NhbGUoMC44KTtcclxuXHR9XHJcblx0LmJ1dHRvbi1sZWZ0IHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvcmlnaHQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xyXG5cdFx0dG9wOiAxLjglO1xyXG5cdFx0bGVmdDogMjEuMyU7XHJcblx0XHR3aWR0aDogMTMuNSU7XHJcblx0XHRoZWlnaHQ6IDguNSU7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XHJcblx0fVxyXG5cdC5idXR0b24tcmlnaHQge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9yaWdodC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XHJcblx0XHR0b3A6IDEuOCU7XHJcblx0XHRsZWZ0OiA2NSU7XHJcblx0XHR3aWR0aDogMTMuNSU7XHJcblx0XHRoZWlnaHQ6IDguNSU7XHJcblx0fVxyXG5cdC5pbWctYm94IHtcclxuXHRcdGhlaWdodDogMjN2dztcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzY2NjY2NjsgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG5cdFx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdFx0Zm9udC1zaXplOiAxdnc7XHJcblx0fVxyXG5cdC5pdGVtLWltZyB7XHJcblx0XHR3aWR0aDogNTAlO1xyXG5cdFx0bWFyZ2luLXRvcDogNSU7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwMGZmZmY7ICovXHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuXHR9XHJcblx0LmRpc3RhbmNlIHtcclxuXHRcdFxyXG5cdH1cclxuXHQuaXRlbS1pbWcgaW1hZ2Uge1xyXG5cdFx0aGVpZ2h0OiA1dnc7XHJcblx0XHR3aWR0aDogNXZ3O1xyXG5cdH1cclxuXHQucHJvZ3Jlc3NCYXIge1xyXG5cdFx0bWFyZ2luLXRvcDogOSU7XHJcblx0XHQvKiB3aWR0aDogMTAwJTsgKi9cclxuXHRcdGhlaWdodDogMjAlO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzIzMzc1MTtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDV2dztcclxuXHR9XHJcblx0LnByb2dyZXNzIHtcclxuXHRcdC8qIHdpZHRoOiA5MCU7ICovXHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkY1NzIyO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNXZ3O1xyXG5cdH1cclxuXHQuY2hhcnRzLWJveCB7XHJcblx0ICB3aWR0aDogODAlO1xyXG5cdCAgaGVpZ2h0OiAyNHZoO1xyXG5cdCAgbWFyZ2luLWxlZnQ6IDEwJTtcclxuXHR9IFxyXG5cdC5jaGFydHMtYm94LXJpbmcge1xyXG5cdFx0d2lkdGg6IDYwJTtcclxuXHRcdGhlaWdodDogMjR2aDtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwMGZmZmY7ICovXHJcblx0fVxyXG5cdC5zdWItaW5mbyB7XHJcblx0XHRmb250LXNpemU6IDEuNXZ3O1xyXG5cdH1cclxuXHQuc3ViLWluZm8gaW1hZ2Uge1xyXG5cdFx0d2lkdGg6IDMuNXZ3O1xyXG5cdFx0aGVpZ2h0OiAzLjV2dztcclxuXHR9XHJcblx0XHJcblx0XHJcblx0XHJcblx0XHJcblx0Lyog5YWx55SoICovXHJcblx0Lm1haW4ge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0aGVpZ2h0OiA4OHZoO1xyXG5cdFx0bWFyZ2luLXRvcDogMXZoO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFxyXG5cdH1cclxuXHQubWlhbi1pdGVtIHtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHR9XHJcblx0Lm1pYW4taXRlbS1ib3gge1xyXG5cdFx0d2lkdGg6IDk4JTtcclxuXHRcdGhlaWdodDogOTglO1xyXG5cdH1cclxuXHQuYm94LWl0ZW0ge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRtYXJnaW4tdG9wOiA0JTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcblx0fVxyXG5cdC5pdGVtLXRpdGxlIHtcclxuXHRcdGZvbnQtc2l6ZToxLjV2dztcclxuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XHJcblx0fVxyXG5cdC52ZXJzaW9ue1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0bGVmdDogMSU7XHJcblx0XHR0b3A6IDElO1xyXG5cdFx0Zm9udC1zaXplOjF2dztcclxuXHRcdHRyYW5zZm9ybTogc2NhbGUoMC44KTtcclxuXHR9XHJcblx0Lml0ZW0tc3ViVGl0bGUge1xyXG5cdFx0Zm9udC1zaXplOjAuNXZ3O1xyXG5cdFx0dGV4dC1pbmRlbnQ6IDBlbTtcclxuXHR9XHJcblx0Lml0ZW0tdGV4dCB7XHJcblx0XHRmb250LXNpemU6IDF2dztcclxuXHRcdHRleHQtaW5kZW50OiAyZW07XHJcblx0XHRsZXR0ZXItc3BhY2luZzogMXB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDN2aDtcclxuXHR9XHJcblx0XHJcblx0Lyog5YWo5p2/L+aLo+aWmeS/oeaBryAqL1xyXG5cdC5pbmZvLXZpZXcge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0bWluLWhlaWdodDogMTAwdmg7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwdncgMTAwdmg7XHJcblx0fVxyXG5cdC5pbmZvLW1haW4ge1xyXG5cdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0aGVpZ2h0OiA4OHZoO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblx0LmluZm8tYm94IHtcclxuXHRcdHdpZHRoOiA5OCU7XHJcblx0XHRoZWlnaHQ6IDk4JTtcclxuXHR9XHJcblx0Lyog5byC5bi45L+h5oGvICovXHJcblx0LmVycm9yLWluZm8tdmlldyB7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcclxuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvYmFja2dyb3VuZC5wbmcpO1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDB2dyAxMDB2aDtcclxuXHR9XHJcblx0XHJcblx0Lyog5by55Ye6OumFjee9ruWMuuWfnyAqL1xyXG5cdC5lamVjdC1tYXNrIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xyXG5cdFx0cG9zaXRpb246IGZpeGVkO1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0bGVmdDogMDtcclxuXHRcdHotaW5kZXg6IDk5OTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHRcclxuXHR9XHJcblx0LmVqZWN0e1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0d2lkdGg6IDQ1dnc7XHJcblx0XHRoZWlnaHQ6IDQ1dmg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMnJlbTtcclxuXHR9XHJcblx0LmVqZWN0LXRpdGxlIHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiA1dmg7XHJcblx0XHRsaW5lLWhlaWdodDogNnZoO1xyXG5cdFx0Zm9udC1zaXplOiAzdmg7XHJcblx0XHRmb250LXdlaWdodDogNzAwO1xyXG5cdFx0Y29sb3I6IFx0IzYwNjI2NjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR9XHJcblx0LmVqZWN0LWlucHV0IHtcclxuXHRcdG1hcmdpbi10b3A6IDJ2aDtcclxuXHRcdGhlaWdodDogMjV2aDtcclxuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwMDE2M0U7ICovXHJcblx0XHQ6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX1cclxuXHR9XHJcblx0Lml0ZW0ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRtYXJnaW46IDF2aCAwIDAgMDtcclxuXHRcdGZvbnQtc2l6ZTogMS41dnc7XHJcblx0XHRjb2xvcjogIzM2MzYzNjtcclxuXHR9XHJcblx0LmRlc2Mge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0d2lkdGg6IDQwJTtcclxuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdFx0Y29sb3I6ICM2MDYyNjY7XHJcblx0XHRcclxuXHR9XHJcblx0LmlucHV0IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0cGFkZGluZy1sZWZ0OiA1cHg7XHJcblx0XHRwYWRkaW5nLXJpZ2h0OiA1cHg7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogM3ZoO1xyXG5cdFx0Ym9yZGVyOiAwLjF2aCBzb2xpZCAjY2ZkNGRjO1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAyMCU7XHJcblx0XHR0ZXh0LWFsaWduOiBzdGFydDtcclxuXHR9XHJcblx0LmVqZWN0LWlucHV0IGlucHV0IHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAzdmg7XHJcblx0XHRmb250LXNpemU6IDF2dztcclxuXHRcdFxyXG5cdFx0XHJcblx0fVxyXG5cdC5lamVjdC1idXR0b24ge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRib3R0b206IDA7XHJcblx0XHRoZWlnaHQ6IDZ2aDtcclxuXHRcdGxpbmUtaGVpZ2h0OiA2dmg7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjO1xyXG5cdH1cclxuXHQuYnV0dG9uLWl0ZW0ge1xyXG5cdFx0d2lkdGg6IDUwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdGZvbnQtc2l6ZTogMS41dnc7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGNvbG9yOiAjOTA5Mzk5O1xyXG5cdH1cclxuXHQuYnV0dG9uLWl0ZW06bGFzdC1jaGlsZCB7XHJcblx0XHRjb2xvcjogIzY3QzIzQTtcclxuXHRcdFxyXG5cdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xyXG5cdH1cclxuXHQuaW5mby1ib3gtdGV4dCB7XHJcblx0XHR3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7XHJcblx0XHRkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHR9XHJcblx0LmluZm8tYm94LXRleHQtaXRlbSB7XHJcblx0XHRoZWlnaHQ6IDIwJTtmb250LXNpemU6IDh2aDtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdH1cclxuPC9zdHlsZT4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///117\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _demodata = _interopRequireDefault(__webpack_require__(/*! @/mockdata/demodata.json */ 139));\nvar _data = _interopRequireDefault(__webpack_require__(/*! @/pages/index/data.json */ 118));\nvar _WebSocketClient = __webpack_require__(/*! @/static/js/WebSocketClient */ 148);\nvar _uniWebSocket = _interopRequireDefault(__webpack_require__(/*! ./uniWebSocket */ 119));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar socket;\nvar _default = {\n data: function data() {\n return {\n series: [],\n homeViewShow: true,\n infoViewShow: false,\n errorInfoViewShow: false,\n homeMode: [],\n infoMode: [],\n errorInfoMode: [],\n baseInfo: {\n xDistance: 1,\n yDistance: 2,\n xDuration: 3,\n yDuration: 4,\n usedPr: 50,\n used: 3537,\n stockCount: '',\n emptyCount: '',\n noneCount: ''\n },\n chartsData: {\n \"Line\": {\n \"categories\": [],\n \"series\": []\n },\n \"Pie\": {\n \"series\": [{\n \"data\": []\n }]\n }\n },\n duration: 300,\n calendar: '',\n ringOpts: {},\n chartsDataLine1: {},\n chartsDataPie2: {},\n fontSize: '',\n height: '',\n showCharts: false,\n ejectShow: false,\n baseIP: '',\n basePort: '',\n baseLedId: '',\n baseCrnId: '',\n baseUrl: '',\n info: null,\n error: null,\n infoType: 0,\n text: '',\n infoText: {\n title: '',\n staNo: \"\",\n matnr: \"\",\n maknx: \"\",\n specs: \"\",\n count: \"\",\n error: \"\",\n barcode: \"\"\n },\n swiperList: [],\n timeOut: false,\n times: 0,\n currDate: '',\n locList: [],\n oldHours: '',\n oldMin: '',\n socketClient: null,\n messages: [],\n version: '',\n socketUrl: '',\n msgType: 'success',\n filename: '',\n dialogContent: '',\n wmsUrl: '',\n wmsPort: ''\n };\n },\n onShow: function onShow() {\n // 隐藏时间,电量,信号等\n\n plus.navigator.setFullscreen(true);\n this.getVersion();\n },\n mounted: function mounted() {\n var that = this;\n var BaseIP = uni.getStorageSync('BaseIp');\n var BaseLedId = uni.getStorageSync('BaseLedId');\n var BasePort = uni.getStorageSync('BasePort');\n var BaseCrnId = uni.getStorageSync('BaseCrnId');\n var PROJ = uni.getStorageSync('UPROJ');\n var WMSURL = uni.getStorageSync('wmsUrl');\n var WMSPORT = uni.getStorageSync('wmsPort');\n that.baseUrl = PROJ;\n that.baseIP = BaseIP;\n that.baseLedId = BaseLedId;\n that.basePort = BasePort;\n that.baseCrnId = BaseCrnId;\n that.wmsUrl = WMSURL;\n that.wmsPort = WMSPORT;\n // this.getUrl()\n },\n created: function created() {\n var that = this;\n var BaseIP = uni.getStorageSync('BaseIp');\n var BaseLedId = uni.getStorageSync('BaseLedId');\n var BasePort = uni.getStorageSync('BasePort');\n var BaseCrnId = uni.getStorageSync('BaseCrnId');\n var PROJ = uni.getStorageSync('UPROJ');\n var WMSURL = uni.getStorageSync('wmsUrl');\n var WMSPORT = uni.getStorageSync('wmsPort');\n that.baseUrl = PROJ;\n that.baseIP = BaseIP;\n that.baseLedId = BaseLedId;\n that.basePort = BasePort;\n that.baseCrnId = BaseCrnId;\n that.wmsUrl = WMSURL;\n that.wmsPort = WMSPORT;\n that.uniWebSocket();\n // that.webSockerInit()\n },\n onLoad: function onLoad() {\n var _this = this;\n setInterval(function () {\n _this.getServerData();\n // this.initlineChart()\n // this.initPieChart()\n // this.getOther()\n // // this.getDate()\n // this.getDate2()\n // this.getInfo()\n // this.getError()\n // this.getInfo2()\n // this.getError2()\n // this.getUrl()\n _this.controller();\n // this.statisticalModel()\n // 测试用\n }, 1000);\n setInterval(function () {\n setTimeout(function () {\n plus.runtime.restart();\n }, 100);\n }, 1000 * 60 * 60 * 4);\n\n // 每小时触发一次垃圾回收\n var memoryCleanerId = setInterval(function () {\n if (plus.os.name.toLowerCase() === 'android') {\n // 强制触发 GC\n plus.android.importClass('java.lang.System');\n plus.android.invoke('java.lang.System', 'gc');\n __f__(\"log\", '手动触发 GC', \" at pages/home/home.vue:478\");\n }\n\n // 清理不再需要的大型数据对象\n if (_this.oldData && _this.oldData.length > 100) {\n _this.oldData = [];\n }\n }, 3000 * 10); // 每小时执行一次\n\n // setInterval(()=> {\n // \tsetTimeout(()=>{\n // \t\tvar time = new Date();\n // \t\tvar hh = time.getHours();\n // \t\tvar mm = time.getMinutes();\n // \t\tif(hh > this.oldHours && mm >this.oldMin && this.oldMin - mm < 55){\n // \t\t\tplus.runtime.restart();\n // \t\t}\n // \t\tif(mm >this.oldMin && mm - this.oldMin >2){\n // \t\t\tplus.runtime.restart();\n // \t\t}\n // \t},100)\n\n // },1000*30)\n },\n\n methods: {\n uniWebSocket: function uniWebSocket() {\n var that = this;\n that.commonUrl = that.baseIP + ':' + that.basePort + \"/\" + that.baseUrl;\n that.socketUrl = \"ws://\" + that.commonUrl + \"/led/\" + that.baseLedId;\n // 创建WebSocket实例\n that.socketClient = new _uniWebSocket.default(that.socketUrl, {\n // 心跳间隔,默认30秒\n heartbeatInterval: 30000,\n // 重连间隔,默认3秒\n reconnectInterval: 3000,\n // 最大重连次数,-1表示无限重连\n maxReconnectAttempts: -1,\n // 消息回调\n onMessage: function onMessage(res) {\n try {\n var data = JSON.parse(res.data);\n that.showDate(data);\n // 处理消息...\n } catch (e) {\n __f__(\"error\", '解析消息失败', e, \" at pages/home/home.vue:523\");\n }\n },\n // 连接打开回调\n onOpen: function onOpen(res) {\n that.timeOut = false;\n that.times = 0;\n __f__(\"log\", 'WebSocket已连接', res, \" at pages/home/home.vue:530\");\n },\n // 连接错误回调\n onError: function onError(error) {\n __f__(\"error\", 'WebSocket错误', error, \" at pages/home/home.vue:534\");\n },\n // 连接关闭回调\n onClose: function onClose(res) {\n that.timeOut = true;\n that.times = that.times + 1;\n that.infoType = 0;\n __f__(\"log\", 'WebSocket已关闭', res, \" at pages/home/home.vue:541\");\n },\n // 重连回调\n onReconnect: function onReconnect(info) {\n __f__(\"log\", \"WebSocket\\u91CD\\u8FDE(\".concat(info.attempts, \"/\").concat(info.maxAttempts, \")\"), \" at pages/home/home.vue:545\");\n }\n });\n\n // 建立连接\n that.socketClient.connect();\n },\n // 发送消息\n sendMessage: function sendMessage(content) {\n var message = {\n type: 'chat',\n content: content,\n timestamp: Date.now()\n };\n this.socketClient.send(message).then(function () {\n __f__(\"log\", '消息发送成功', \" at pages/home/home.vue:562\");\n }).catch(function (error) {\n __f__(\"error\", '消息发送失败', error, \" at pages/home/home.vue:565\");\n });\n },\n webSockerInit: function webSockerInit() {\n var that = this;\n if (that.baseIP === '' && that.basePort === '' && that.baseUrl === '') {\n that.timeOut = true;\n that.times = that.times + 1;\n that.infoType = 0;\n return;\n }\n that.commonUrl = that.baseIP + ':' + that.basePort + \"/\" + that.baseUrl;\n var socketUrl = \"ws://\" + that.commonUrl + \"/led/\" + that.baseLedId;\n // socketUrl = \"ws://10.0.100.150:8080/gtctu/led/113\"\n var ws = new _WebSocketClient.WebSocketClient(socketUrl);\n ws.connect();\n __f__(\"log\", ws, \" at pages/home/home.vue:584\");\n ws.onclose(function () {});\n ws.onmessage(function (msg) {\n that.timeOut = false;\n var data = JSON.parse(msg.data);\n that.showDate(data);\n });\n },\n showDate: function showDate(data) {\n var that = this;\n if (data.type === \"default\") {\n that.chartsData.Pie.series[0].data = data.pie;\n that.baseInfo.stockCount = data.stockCunt;\n that.baseInfo.emptyCount = data.emptyCount;\n that.baseInfo.noneCount = data.noneCount;\n that.baseInfo.used = data.used;\n that.baseInfo.usedPr = data.usedPr;\n that.chartsData.Line.categories = [that.getDateFormat(-11), that.getDateFormat(-10), that.getDateFormat(-9), that.getDateFormat(-8), that.getDateFormat(-7), that.getDateFormat(-6), that.getDateFormat(-5), that.getDateFormat(-4), that.getDateFormat(-3), that.getDateFormat(-2), that.getDateFormat(-1), that.getDateFormat(0)];\n that.chartsData.Line.series = data.rows;\n that.calendar = data.year + \"年\" + data.month + \"月\" + data.day + \"日 \" + data.hour + \":\" + data.minute + \":\" + data.second + \" \" + data.week;\n that.currDate = data.year + \"/\" + data.month + \"/\" + data.day;\n that.locList = data.inventoryData;\n that.oldHours = data.hour;\n that.oldMin = data.minute;\n } else if (data.type === \"error\") {\n if (data.errMsg && data.errMsg !== \"\") {\n var errorInfo = data.errMsg;\n if (that.infoType == 1) {\n that.infoType = 3;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n return;\n }\n that.infoType = 2;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n } else {\n if (that.infoType == 1) {\n return;\n }\n that.infoType = 0;\n }\n } else if (data.type === \"task\") {\n if (data.taskList && data.taskList !== \"\" && data.taskList.length != 0) {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n // infoType1:只有拣料等信息\n that.infoType = 1;\n if (data.taskList[0].ioType === 101) {\n that.infoText.title = '全板出库';\n } else if (data.taskList[0].ioType === 103) {\n that.infoText.title = '拣料出库';\n } else if (data.taskList[0].ioType === 107) {\n that.infoText.title = '盘点出库';\n } else if (data.taskList[0].ioType === 1) {\n that.infoText.title = '入库';\n } else if (data.taskList[0].ioType === 10) {\n that.infoText.title = '空托入库';\n } else if (data.taskList[0].ioType === 110) {\n that.infoText.title = '空托出库';\n } else if (data.taskList[0].ioType === 104) {\n that.infoText.title = '并板出库';\n } else if (data.taskList[0].ioType === 54) {\n that.infoText.title = '并板入库';\n }\n that.infoText.barcode = data.taskList[0].barcode;\n that.infoText.workNo = data.taskList[0].workNo;\n that.infoText.sourceLocNo = data.taskList[0].sourceLocNo;\n that.infoText.staNo = data.taskList[0].staNo;\n that.swiperList = data.taskList[0].matDtos;\n // that.infoText.matnr = res.data[0].matDtos[0].matnr\n // that.infoText.specs = res.data[0].matDtos[0].specs\n // that.infoText.maknx = res.data[0].matDtos[0].maknx\n // that.infoText.count = res.data[0].matDtos[0].count\n } else {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n that.infoType = 0;\n }\n }\n },\n statisticalModel: function statisticalModel() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/locDetl/pda/statisticalModel\",\n method: 'GET',\n success: function success(result) {\n var res = result.data;\n if (res.code === 200) {\n __f__(\"log\", res.data, \" at pages/home/home.vue:687\");\n that.locList = res.data;\n }\n }\n });\n },\n getUrl: function getUrl() {\n this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePort + \"/\" + this.baseUrl;\n },\n getServerData: function getServerData() {\n this.chartsDataLine1 = JSON.parse(JSON.stringify(this.chartsData.Line));\n this.chartsDataPie2 = JSON.parse(JSON.stringify(this.chartsData.Pie));\n },\n // 获取错误信息\n getInfo2: function getInfo2() {\n var that = this;\n var result = _data.default.dataInfo2;\n var res = result.data;\n if (res.data && res.data !== \"\") {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n // infoType1:只有拣料等信息\n that.infoType = 1;\n if (res.data[0].ioType === 101) {\n that.infoText.title = '全板出库';\n } else if (res.data[0].ioType === 103) {\n that.infoText.title = '检料出库';\n } else if (res.data[0].ioType === 107) {\n that.infoText.title = '盘点出库';\n } else if (res.data[0].ioType === 1) {\n that.infoText.title = '入库';\n } else if (res.data[0].ioType === 10) {\n that.infoText.title = '空托入库';\n } else if (res.data[0].ioType === 110) {\n that.infoText.title = '空托出库';\n }\n that.infoText.barcode = res.data[0].barcode;\n that.infoText.workNo = res.data[0].workNo;\n that.infoText.sourceLocNo = res.data[0].sourceLocNo;\n that.infoText.staNo = res.data[0].staNo;\n that.swiperList = res.data[0].matDtos;\n // that.infoText.matnr = res.data[0].matDtos[0].matnr\n // that.infoText.specs = res.data[0].matDtos[0].specs\n // that.infoText.maknx = res.data[0].matDtos[0].maknx\n // that.infoText.count = res.data[0].matDtos[0].count\n } else {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n that.infoType = 0;\n }\n },\n getError2: function getError2() {\n var that = this;\n var result = _data.default.dataError2;\n var res = result.data;\n if (res.data && res.data !== \"\") {\n var errorInfo = res.data;\n if (that.infoType == 1) {\n that.infoType = 3;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n return;\n }\n that.infoType = 2;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n } else {\n if (that.infoType == 1) {\n return;\n }\n that.infoType = 0;\n }\n },\n getInfo: function getInfo() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/led\",\n method: \"GET\",\n data: {\n ledId: that.baseLedId\n },\n success: function success(result) {\n that.timeOut = false;\n that.times = 0;\n var res = result.data;\n if (res.data && res.data !== \"\") {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n // infoType1:只有拣料等信息\n that.infoType = 1;\n if (res.data[0].ioType === 101) {\n that.infoText.title = '全板出库';\n } else if (res.data[0].ioType === 103) {\n that.infoText.title = '检料出库';\n } else if (res.data[0].ioType === 107) {\n that.infoText.title = '盘点出库';\n } else if (res.data[0].ioType === 1) {\n that.infoText.title = '入库';\n } else if (res.data[0].ioType === 10) {\n that.infoText.title = '空托入库';\n } else if (res.data[0].ioType === 110) {\n that.infoText.title = '空托出库';\n }\n that.infoText.barcode = res.data[0].barcode;\n that.infoText.workNo = res.data[0].workNo;\n that.infoText.sourceLocNo = res.data[0].sourceLocNo;\n that.infoText.staNo = res.data[0].staNo;\n that.swiperList = res.data[0].matDtos;\n // that.infoText.matnr = res.data[0].matDtos[0].matnr\n // that.infoText.specs = res.data[0].matDtos[0].specs\n // that.infoText.maknx = res.data[0].matDtos[0].maknx\n // that.infoText.count = res.data[0].matDtos[0].count\n } else {\n if (that.infoType == 2 || that.infoType == 3) {\n return;\n }\n that.infoType = 0;\n }\n },\n fail: function fail(err) {\n that.timeOut = true;\n that.times = that.times + 1;\n that.infoType = 0;\n }\n });\n },\n getError: function getError() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/led/error\",\n data: {\n ledId: that.baseLedId\n },\n method: \"GET\",\n success: function success(result) {\n that.timeOut = false;\n that.times = 0;\n var res = result.data;\n if (res.data && res.data !== \"\") {\n var errorInfo = res.data;\n if (that.infoType == 1) {\n that.infoType = 3;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n return;\n }\n that.infoType = 2;\n that.infoText.title = \"其他信息\";\n // that.infoText.title = \"异常\"\n that.infoText.error = errorInfo;\n } else {\n if (that.infoType == 1) {\n return;\n }\n that.infoType = 0;\n }\n },\n fail: function fail(err) {\n that.timeOut = true;\n that.infoType = 0;\n }\n });\n },\n // 控制器\n controller: function controller() {\n var _this2 = this;\n switch (this.infoType) {\n // 有信息 但 没有错误信息\n case 0:\n if (this.errorInfoViewShow) {\n this.errorInfoViewShow = false;\n this.errorInfoMode = ['fade', 'slide-bottom'];\n setTimeout(function () {\n _this2.homeViewShow = true;\n _this2.homeMode = ['fade', 'slide-bottom'];\n }, 1000);\n } else if (this.infoViewShow) {\n this.infoViewShow = false;\n this.infoMode = ['fade', 'slide-bottom'];\n setTimeout(function () {\n _this2.homeViewShow = true;\n _this2.homeMode = ['fade', 'slide-bottom'];\n }, 1000);\n } else if (this.errorInfoViewShow && this.infoViewShow) {\n this.errorInfoViewShow = false;\n this.infoViewShow = false;\n this.infoMode = ['fade', 'slide-bottom'];\n setTimeout(function () {\n _this2.homeViewShow = true;\n _this2.homeMode = ['fade', 'slide-bottom'];\n }, 1000);\n }\n return;\n case 1:\n if (this.homeViewShow) {\n this.homeViewShow = false;\n this.homeMode = ['fade', 'slide-bottom'];\n setTimeout(function () {\n _this2.infoViewShow = true;\n _this2.infoMode = ['fade', 'slide-bottom'];\n }, 1000);\n } else if (this.errorInfoViewShow) {\n this.errorInfoViewShow = false;\n this.errorInfoMode = ['fade', 'slide-bottom'];\n setTimeout(function () {\n _this2.infoViewShow = true;\n _this2.infoMode = ['fade', 'slide-bottom'];\n }, 1000);\n }\n return;\n // 有信息 且 有错误信息\n case 2:\n if (this.homeViewShow) {\n this.homeViewShow = false;\n this.homeMode = ['fade', 'slide-bottom'];\n setTimeout(function () {\n _this2.errorInfoViewShow = true;\n _this2.errorInfoMode = ['fade', 'slide-bottom'];\n }, 1000);\n } else if (this.infoViewShow) {\n this.infoViewShow = false;\n this.infoMode = ['fade', 'slide-bottom'];\n setTimeout(function () {\n _this2.errorInfoViewShow = true;\n _this2.errorInfoMode = ['fade', 'slide-bottom'];\n }, 1000);\n }\n return;\n // 有信息 且 有错误信息\n case 3:\n if (this.homeViewShow) {\n this.homeViewShow = false;\n this.homeMode = ['fade', 'slide-bottom'];\n setTimeout(function () {\n _this2.errorInfoViewShow = true;\n _this2.errorInfoMode = ['fade', 'slide-bottom'];\n }, 1000);\n } else if (this.infoViewShow) {\n this.infoViewShow = false;\n this.infoMode = ['fade', 'slide-bottom'];\n setTimeout(function () {\n _this2.errorInfoViewShow = true;\n _this2.errorInfoMode = ['fade', 'slide-bottom'];\n }, 1000);\n }\n return;\n }\n },\n // 主屏幕\n handle: function handle(type) {\n this.homeViewShow = !this.homeViewShow;\n this.modeClass = type;\n },\n // 拣料\n handle1: function handle1(type) {\n this.infoViewShow = !this.infoViewShow;\n this.modeClass = type;\n },\n // 异常\n handle2: function handle2(type) {\n this.errorInfoViewShow = !this.errorInfoViewShow;\n this.modeClass = type;\n },\n // 配置\n ejected: function ejected() {\n this.ejectShow = true;\n },\n // 取消配置\n ejectClose: function ejectClose() {\n this.ejectShow = false;\n },\n // 确认配置\n ejectConfirm: function ejectConfirm() {\n uni.setStorageSync('BaseIp', this.baseIP);\n uni.setStorageSync('BaseLedId', this.baseLedId);\n uni.setStorageSync('BasePort', this.basePort);\n uni.setStorageSync('BaseCrnId', this.baseCrnId);\n uni.setStorageSync('UPROJ', this.baseUrl);\n uni.setStorageSync('wmsUrl', this.wmsUrl);\n uni.setStorageSync('wmsPort', this.wmsPort);\n this.getUrl();\n this.ejectShow = false;\n },\n // 日历 服务器\n getDate2: function getDate2() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/date\",\n method: \"GET\",\n success: function success(result) {\n var res = result.data.data;\n }\n });\n },\n // 日历\n getDate: function getDate() {\n var dt = new Date();\n var year, month, day, hours, minutes, seconds, weeks;\n year = dt.getFullYear();\n month = dt.getMonth() + 1 < 10 ? '0' + (dt.getMonth() + 1) : dt.getMonth() + 1;\n day = dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate();\n hours = dt.getHours() < 10 ? '0' + dt.getHours() : dt.getHours();\n minutes = dt.getMinutes() < 10 ? '0' + dt.getMinutes() : dt.getMinutes();\n seconds = dt.getSeconds() < 10 ? '0' + dt.getSeconds() : dt.getSeconds();\n weeks = dt.getDay();\n switch (weeks) {\n case 0:\n weeks = \"星期日\";\n break;\n case 1:\n weeks = \"星期一\";\n break;\n case 2:\n weeks = \"星期二\";\n break;\n case 3:\n weeks = \"星期三\";\n break;\n case 4:\n weeks = \"星期四\";\n break;\n case 5:\n weeks = \"星期五\";\n break;\n default:\n weeks = \"星期六\";\n }\n this.calendar = year + \"年\" + month + \"月\" + day + \"日 \" + hours + \":\" + minutes + \":\" + seconds + \" \" + weeks;\n },\n getDateFormat: function getDateFormat(value) {\n var date = new Date(this.currDate); // 获取当前时间\n date.setDate(date.getDate() + value); // 设置天数 -1 天\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var newDate = m + '-' + d;\n return newDate;\n },\n /*************** 折线图 *****************************************************************************************************/initlineChart: function initlineChart() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/line/charts\",\n method: 'GET',\n success: function success(result) {\n var res = result.data;\n if (res.code === 200) {}\n }\n });\n },\n /*************** 饼图 *****************************************************************************************************/initPieChart: function initPieChart() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/loc/rep\",\n method: 'GET',\n success: function success(result) {\n var res = result.data;\n if (res.code === 200) {\n that.chartsData.Pie.series[0].data = res.data.pie;\n that.baseInfo.stockCount = res.data.stockCunt;\n that.baseInfo.emptyCount = res.data.emptyCount;\n that.baseInfo.noneCount = res.data.noneCount;\n that.baseInfo.used = res.data.used;\n that.baseInfo.usedPr = res.data.usedPr;\n }\n }\n });\n },\n getOther: function getOther() {\n var that = this;\n uni.request({\n url: that.commonUrl + \"/monitor/other\",\n data: {\n crnId: that.baseCrnId,\n ledId: that.baseLedId\n },\n success: function success(result) {\n // console.log(result);\n var res = result.data;\n if (res.code === 200) {\n that.baseInfo.xDistance = res.data.xDistance;\n that.baseInfo.yDistance = res.data.yDistance;\n that.baseInfo.xDuration = res.data.xDuration;\n that.baseInfo.yDuration = res.data.yDuration;\n } else if (res.code === 403) {} else {}\n }\n });\n },\n //检测当前平台,如果是安卓则启动安卓更新\n getVersion: function getVersion() {\n var that = this;\n uni.getSystemInfo({\n success: function success(res) {\n if (res.platform == \"android\") {\n that.AndroidCheckUpdate();\n }\n // that.AndroidCheckUpdate();\n }\n });\n },\n // 获取当前版本号\n AndroidCheckUpdate: function AndroidCheckUpdate() {\n var that = this;\n plus.runtime.getProperty(plus.runtime.appid, function (wgtinfo) {\n that.version = wgtinfo.version; //客户端版本号\n });\n\n setTimeout(function () {\n that.getUpdateVersion();\n }, 100);\n },\n // 校验版本\n getUpdateVersion: function getUpdateVersion() {\n var that = this;\n var type = 1;\n if (that.baseUrl == 'http://undefined:undefined/undefined') {\n return;\n }\n var wms = 'http://' + that.baseIP + ':' + that.wmsPort + \"/\" + that.wmsUrl;\n __f__(\"log\", wms, \" at pages/home/home.vue:1107\");\n var url = wms + '/appVersion/checkUpdate/' + that.version + '/' + type;\n uni.request({\n url: url,\n method: 'GET',\n success: function success(res) {\n __f__(\"log\", res, \" at pages/home/home.vue:1113\");\n var res = res.data;\n if (res.data) {\n that.filename = res.data.path;\n that.dialogContent = '发现新版本:' + res.data.version + ', 是否立即更新';\n that.$refs.upVersion.open();\n } else {\n uni.showToast({\n title: res.msg,\n icon: \"none\",\n position: 'top'\n });\n }\n }\n });\n },\n dialogConfirm: function dialogConfirm() {\n this.$refs.upVersion.close();\n this.downWgt();\n },\n dialogClose: function dialogClose() {\n this.$refs.upVersion.close();\n },\n downWgt: function downWgt() {\n var that = this;\n var wms = 'http://' + that.baseIP + ':' + that.wmsPort + \"/\" + that.wmsUrl;\n var downloadUrl = wms + \"/appVersion/downloadApp/\" + that.filename;\n uni.showLoading({\n title: '更新中……'\n });\n var downloadTask = uni.downloadFile({\n //执行下载\n url: downloadUrl,\n //下载地址\n timeout: 1000 * 30,\n //30秒超时时间\n success: function success(downloadResult) {\n //下载成功\n __f__(\"log\", downloadResult, \" at pages/home/home.vue:1148\");\n that.showdownLine = false;\n uni.hideLoading();\n if (downloadResult.statusCode == 200) {\n uni.showModal({\n title: '',\n content: '更新成功,确定现在重启吗?',\n confirmText: '重启',\n confirmColor: '#EE8F57',\n success: function success(res) {\n if (res.confirm == true) {\n plus.runtime.install(\n //安装\n downloadResult.tempFilePath, {\n force: true\n }, function (res) {\n utils.showToast('更新成功,重启中');\n plus.runtime.restart();\n });\n }\n }\n });\n } else {\n uni.hideLoading();\n that.showdownLine = false;\n uni.showToast({\n title: '请先上传安装包',\n icon: 'error'\n });\n }\n },\n fail: function fail(err) {\n uni.hideLoading();\n that.showdownLine = false;\n that.$u.toast(downloadResult.errMsg);\n },\n complete: function complete(com) {\n __f__(\"log\", com, \" at pages/home/home.vue:1187\");\n }\n });\n\n // 下载进度\n downloadTask.onProgressUpdate(function (res) {\n that.downloadNum = res.progress;\n __f__(\"log\", '下载进度' + that.downloadNum, \" at pages/home/home.vue:1194\");\n });\n }\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9ob21lLnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwic2VyaWVzIiwiaG9tZVZpZXdTaG93IiwiaW5mb1ZpZXdTaG93IiwiZXJyb3JJbmZvVmlld1Nob3ciLCJob21lTW9kZSIsImluZm9Nb2RlIiwiZXJyb3JJbmZvTW9kZSIsImJhc2VJbmZvIiwieERpc3RhbmNlIiwieURpc3RhbmNlIiwieER1cmF0aW9uIiwieUR1cmF0aW9uIiwidXNlZFByIiwidXNlZCIsInN0b2NrQ291bnQiLCJlbXB0eUNvdW50Iiwibm9uZUNvdW50IiwiY2hhcnRzRGF0YSIsImR1cmF0aW9uIiwiY2FsZW5kYXIiLCJyaW5nT3B0cyIsImNoYXJ0c0RhdGFMaW5lMSIsImNoYXJ0c0RhdGFQaWUyIiwiZm9udFNpemUiLCJoZWlnaHQiLCJzaG93Q2hhcnRzIiwiZWplY3RTaG93IiwiYmFzZUlQIiwiYmFzZVBvcnQiLCJiYXNlTGVkSWQiLCJiYXNlQ3JuSWQiLCJiYXNlVXJsIiwiaW5mbyIsImVycm9yIiwiaW5mb1R5cGUiLCJ0ZXh0IiwiaW5mb1RleHQiLCJ0aXRsZSIsInN0YU5vIiwibWF0bnIiLCJtYWtueCIsInNwZWNzIiwiY291bnQiLCJiYXJjb2RlIiwic3dpcGVyTGlzdCIsInRpbWVPdXQiLCJ0aW1lcyIsImN1cnJEYXRlIiwibG9jTGlzdCIsIm9sZEhvdXJzIiwib2xkTWluIiwic29ja2V0Q2xpZW50IiwibWVzc2FnZXMiLCJ2ZXJzaW9uIiwic29ja2V0VXJsIiwibXNnVHlwZSIsImZpbGVuYW1lIiwiZGlhbG9nQ29udGVudCIsIndtc1VybCIsIndtc1BvcnQiLCJvblNob3ciLCJwbHVzIiwibW91bnRlZCIsInRoYXQiLCJjcmVhdGVkIiwib25Mb2FkIiwic2V0SW50ZXJ2YWwiLCJzZXRUaW1lb3V0IiwibWV0aG9kcyIsInVuaVdlYlNvY2tldCIsImhlYXJ0YmVhdEludGVydmFsIiwicmVjb25uZWN0SW50ZXJ2YWwiLCJtYXhSZWNvbm5lY3RBdHRlbXB0cyIsIm9uTWVzc2FnZSIsIm9uT3BlbiIsIm9uRXJyb3IiLCJvbkNsb3NlIiwib25SZWNvbm5lY3QiLCJzZW5kTWVzc2FnZSIsInR5cGUiLCJjb250ZW50IiwidGltZXN0YW1wIiwidGhlbiIsImNhdGNoIiwid2ViU29ja2VySW5pdCIsIndzIiwic2hvd0RhdGUiLCJzdGF0aXN0aWNhbE1vZGVsIiwidW5pIiwidXJsIiwibWV0aG9kIiwic3VjY2VzcyIsImdldFVybCIsImdldFNlcnZlckRhdGEiLCJnZXRJbmZvMiIsImdldEVycm9yMiIsImdldEluZm8iLCJsZWRJZCIsImZhaWwiLCJnZXRFcnJvciIsImNvbnRyb2xsZXIiLCJoYW5kbGUiLCJoYW5kbGUxIiwiaGFuZGxlMiIsImVqZWN0ZWQiLCJlamVjdENsb3NlIiwiZWplY3RDb25maXJtIiwiZ2V0RGF0ZTIiLCJnZXREYXRlIiwieWVhciIsIm1vbnRoIiwiZGF5IiwiaG91cnMiLCJtaW51dGVzIiwic2Vjb25kcyIsIndlZWtzIiwiZ2V0RGF0ZUZvcm1hdCIsImRhdGUiLCJpbml0bGluZUNoYXJ0IiwiaW5pdFBpZUNoYXJ0IiwiZ2V0T3RoZXIiLCJjcm5JZCIsImdldFZlcnNpb24iLCJBbmRyb2lkQ2hlY2tVcGRhdGUiLCJnZXRVcGRhdGVWZXJzaW9uIiwiaWNvbiIsInBvc2l0aW9uIiwiZGlhbG9nQ29uZmlybSIsImRpYWxvZ0Nsb3NlIiwiZG93bldndCIsInRpbWVvdXQiLCJjb25maXJtVGV4dCIsImNvbmZpcm1Db2xvciIsImRvd25sb2FkUmVzdWx0IiwiZm9yY2UiLCJ1dGlscyIsImNvbXBsZXRlIiwiZG93bmxvYWRUYXNrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBNFRBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQUEsZUFDQTtFQUNBQTtJQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7TUFDQUM7UUFDQTtVQUNBO1VBQ0E7UUFDQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBVDtRQUNBVTtNQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO0lBRUE7RUFDQTtFQUNBQztJQUNBOztJQUVBQztJQUVBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0FDO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0FBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQUQ7SUFDQUE7SUFDQUE7SUFDQUE7SUFDQUE7SUFDQUE7SUFDQUE7SUFDQUE7SUFDQTtFQUNBO0VBQ0FFO0lBQUE7SUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBRUE7SUFFQUE7TUFDQUM7UUFDQU47TUFDQTtJQUVBOztJQUVBO0lBQ0E7TUFFQTtRQUNBO1FBQ0FBO1FBQ0FBO1FBQ0E7TUFDQTs7TUFHQTtNQUNBO1FBQ0E7TUFDQTtJQUNBOztJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7SUFFQTtFQUNBOztFQUNBTztJQUNBQztNQUNBO01BQ0FOO01BQ0FBO01BQ0E7TUFDQUE7UUFDQTtRQUNBTztRQUNBO1FBQ0FDO1FBQ0E7UUFDQUM7UUFDQTtRQUNBQztVQUNBO1lBQ0E7WUFDQVY7WUFDQTtVQUNBO1lBQ0E7VUFDQTtRQUNBO1FBQ0E7UUFDQVc7VUFDQVg7VUFDQUE7VUFDQTtRQUNBO1FBQ0E7UUFDQVk7VUFDQTtRQUNBO1FBQ0E7UUFDQUM7VUFDQWI7VUFDQUE7VUFDQUE7VUFDQTtRQUNBO1FBQ0E7UUFDQWM7VUFDQTtRQUNBO01BQ0E7O01BRUE7TUFDQWQ7SUFDQTtJQUNBO0lBQ0FlO01BQ0E7UUFDQUM7UUFDQUM7UUFDQUM7TUFDQTtNQUVBLGdDQUNBQztRQUNBO01BQ0EsR0FDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUVBO1FBQ0FyQjtRQUNBQTtRQUNBQTtRQUNBO01BQ0E7TUFFQUE7TUFDQTtNQUNBO01BQ0E7TUFDQXNCO01BRUE7TUFFQUEsd0JBRUE7TUFFQUE7UUFDQXRCO1FBQ0E7UUFDQUE7TUFFQTtJQUVBO0lBQ0F1QjtNQUNBO01BQ0E7UUFDQXZCO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBRUFBLG1DQUNBQSxrR0FDQUEsZ0dBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO1FBQ0FBO01BQ0E7UUFDQTtVQUNBO1VBQ0E7WUFDQUE7WUFDQUE7WUFDQTtZQUNBQTtZQUNBO1VBQ0E7VUFDQUE7VUFDQUE7VUFDQTtVQUNBQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1VBQ0FBO1FBQ0E7TUFDQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1VBQ0E7VUFDQUE7VUFDQTtZQUNBQTtVQUNBO1lBQ0FBO1VBQ0E7WUFDQUE7VUFDQTtZQUNBQTtVQUNBO1lBQ0FBO1VBQ0E7WUFDQUE7VUFDQTtZQUNBQTtVQUNBO1lBQ0FBO1VBQ0E7VUFDQUE7VUFDQUE7VUFDQUE7VUFDQUE7VUFDQUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1VBQ0FBO1FBQ0E7TUFDQTtJQUNBO0lBQ0F3QjtNQUNBO01BQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1VBQ0E7VUFDQTtZQUNBO1lBQ0E1QjtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E2QjtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7VUFDQTtRQUNBO1FBQ0E7UUFDQS9CO1FBQ0E7VUFDQUE7UUFDQTtVQUNBQTtRQUNBO1VBQ0FBO1FBQ0E7VUFDQUE7UUFDQTtVQUNBQTtRQUNBO1VBQ0FBO1FBQ0E7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7VUFDQTtRQUNBO1FBQ0FBO01BQ0E7SUFDQTtJQUNBZ0M7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBO1FBQ0E7VUFDQWhDO1VBQ0FBO1VBQ0E7VUFDQUE7VUFDQTtRQUNBO1FBQ0FBO1FBQ0FBO1FBQ0E7UUFDQUE7TUFDQTtRQUNBO1VBQ0E7UUFDQTtRQUNBQTtNQUNBO0lBQ0E7SUFDQWlDO01BQ0E7TUFDQVI7UUFDQUM7UUFDQUM7UUFDQTNGO1VBQUFrRztRQUFBO1FBQ0FOO1VBQ0E1QjtVQUNBQTtVQUNBO1VBQ0E7WUFDQTtjQUNBO1lBQ0E7WUFDQTtZQUNBQTtZQUNBO2NBQ0FBO1lBQ0E7Y0FDQUE7WUFDQTtjQUNBQTtZQUNBO2NBQ0FBO1lBQ0E7Y0FDQUE7WUFDQTtjQUNBQTtZQUNBO1lBQ0FBO1lBQ0FBO1lBQ0FBO1lBQ0FBO1lBQ0FBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7VUFDQTtZQUNBO2NBQ0E7WUFDQTtZQUNBQTtVQUNBO1FBQ0E7UUFDQW1DO1VBQ0FuQztVQUNBQTtVQUNBQTtRQUNBO01BQ0E7SUFFQTtJQUNBb0M7TUFDQTtNQUNBWDtRQUNBQztRQUNBMUY7VUFBQWtHO1FBQUE7UUFDQVA7UUFDQUM7VUFDQTVCO1VBQ0FBO1VBQ0E7VUFDQTtZQUNBO1lBQ0E7Y0FDQUE7Y0FDQUE7Y0FDQTtjQUNBQTtjQUNBO1lBQ0E7WUFDQUE7WUFDQUE7WUFDQTtZQUNBQTtVQUNBO1lBQ0E7Y0FDQTtZQUNBO1lBQ0FBO1VBQ0E7UUFDQTtRQUNBbUM7VUFDQW5DO1VBQ0FBO1FBQ0E7TUFDQTtJQUVBO0lBQ0E7SUFDQXFDO01BQUE7TUFDQTtRQUNBO1FBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQWpDO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0FBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQUE7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtVQUNBO1FBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQUE7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtZQUNBO1lBQ0E7WUFDQUE7Y0FDQTtjQUNBO1lBQ0E7VUFDQTtVQUVBO1FBQ0E7UUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBQTtjQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBQTtjQUNBO2NBQ0E7WUFDQTtVQUNBO1VBQ0E7UUFDQTtRQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0FBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0FBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7VUFDQTtNQUFBO0lBSUE7SUFDQTtJQUNBa0M7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0E7SUFDQUM7TUFDQWxCO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0FBO01BQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQW1CO01BQ0E7TUFDQW5CO1FBQ0FDO1FBQ0FDO1FBQ0FDO1VBQ0E7UUFFQTtNQUNBO0lBQ0E7SUFFQTtJQUNBaUI7TUFDQTtNQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0E7UUFDQTtVQUFBQTtVQUFBO1FBQ0E7VUFBQUE7VUFBQTtRQUNBO1VBQUFBO1VBQUE7UUFDQTtVQUFBQTtVQUFBO1FBQ0E7VUFBQUE7VUFBQTtRQUNBO1VBQUFBO1VBQUE7UUFDQTtVQUFBQTtNQUFBO01BRUE7SUFDQTtJQUNBQztNQUNBO01BQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDQTtJQUNBLDJIQUNBQztNQUNBO01BQ0E5QjtRQUNBQztRQUNBQztRQUNBQztVQUNBO1VBQ0EsdUJBRUE7UUFDQTtNQUNBO0lBQ0E7SUFDQSwwSEFDQTRCO01BQ0E7TUFDQS9CO1FBQ0FDO1FBQ0FDO1FBQ0FDO1VBQ0E7VUFDQTtZQUNBNUI7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBeUQ7TUFDQTtNQUNBaEM7UUFDQUM7UUFDQTFGO1VBQ0EwSDtVQUNBeEI7UUFDQTtRQUNBTjtVQUNBO1VBQ0E7VUFDQTtZQUNBNUI7WUFDQUE7WUFDQUE7WUFDQUE7VUFDQSw4QkFFQSxRQUVBO1FBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQTJEO01BQ0E7TUFDQWxDO1FBQ0FHO1VBQ0E7WUFDQTVCO1VBQ0E7VUFDQTtRQUVBO01BQ0E7SUFDQTtJQUNBO0lBQ0E0RDtNQUNBO01BQ0E5RDtRQUNBRTtNQUNBOztNQUNBSTtRQUNBSjtNQUNBO0lBQ0E7SUFDQTtJQUNBNkQ7TUFDQTtNQUNBO01BQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0FwQztRQUNBQztRQUNBQztRQUNBQztVQUNBO1VBQ0E7VUFDQTtZQUNBNUI7WUFDQUE7WUFDQUE7VUFDQTtZQUNBeUI7Y0FDQW5EO2NBQ0F3RjtjQUNBQztZQUNBO1VBQ0E7UUFFQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0F6QztRQUNBbkQ7TUFDQTtNQUNBO1FBQUE7UUFDQW9EO1FBQUE7UUFDQXlDO1FBQUE7UUFDQXZDO1VBQUE7VUFDQTtVQUNBNUI7VUFDQXlCO1VBQ0E7WUFDQUE7Y0FDQW5EO2NBQ0EyQztjQUNBbUQ7Y0FDQUM7Y0FDQXpDO2dCQUNBO2tCQUNBOUI7a0JBQUE7a0JBQ0F3RTtvQkFDQUM7a0JBQ0EsR0FDQTtvQkFDQUM7b0JBQ0ExRTtrQkFDQSxFQUNBO2dCQUNBO2NBQ0E7WUFDQTtVQUNBO1lBQ0EyQjtZQUNBekI7WUFDQXlCO2NBQ0FuRDtjQUNBd0Y7WUFDQTtVQUNBO1FBQ0E7UUFDQTNCO1VBQ0FWO1VBQ0F6QjtVQUNBQTtRQUNBO1FBQ0F5RTtVQUVBO1FBQ0E7TUFDQTs7TUFFQTtNQUNBQztRQUNBMUU7UUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUVBO0FBQUEsMkIiLCJmaWxlIjoiMTE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8dmlldyBjbGFzcz1cImNvbnRhaW5lclwiPlxuXHRcdDx1bmktdHJhbnNpdGlvbiA6ZHVyYXRpb249XCJkdXJhdGlvblwiIDptb2RlLWNsYXNzPVwiaG9tZU1vZGVcIiA6c2hvdz1cImhvbWVWaWV3U2hvd1wiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJob21lLXZpZXdcIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkXCI+XG5cdFx0XHRcdFx0PHRleHQ+5pm66IO95aSn5bGP5pi+56S657O757ufPC90ZXh0PlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwhLS0g5pel5Y6GIC0tPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRpbWUtdG9vbHNcIj57e2NhbGVuZGFyfX08L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidmVyc2lvblwiPlY6e3t2ZXJzaW9ufX08L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLXJpZ2h0XCIgQGNsaWNrPVwiZWplY3RlZCgpXCI+PC92aWV3PlxuXHRcdFx0XHQ8IS0tIOS4u+inhuWbviAtLT5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtYWluXCI+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtaWFuLWl0ZW1cIj5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibWlhbi1pdGVtLWJveFwiPlxuXHRcdFx0XHRcdFx0XHQ8eS1ib3g+XG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5pm66IO95aSn5bGP5pi+56S657O757ufPC90ZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+SW50ZWxsaWdlbnQgTGFyZ2VTY3JlZW4gRGlzcGxheSBTeXN0ZW08L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5LuT5bqT5pWw5o2uPC90ZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+d2FyZWhvdXNlIGRhdGE8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImltZy1ib3hcIj5cdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIHN3aXBlciDkuIDkupvor7TmmI5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2lyY3VsYXIg5piv5ZCm6YeH55So6KGU5o6l5ruR5Yqo77yM5Y2z5pKt5pS+5Yiw5pyr5bC+5ZCO6YeN5paw5Zue5Yiw5byA5aS0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZlcnRpY2FsIOa7keWKqOaWueWQkeaYr+WQpuS4uue6teWQkSBcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheS1tdWx0aXBsZS1pdGVtcyDlkIzml7bmmL7npLrnmoTmu5HlnZfmlbDph48gLS0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3ICB2LWZvcj1cIihpdGVtLGkpIGluIGxvY0xpc3RcIiA6a2V5PVwiaVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogMXZ3O1wiPueJqeaWmeeggToge3tpdGVtLm1hdG5yfX08L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogMXZ3O1wiPuaVsOmHjzoge3tpdGVtLm1hdG5yQ291bnR9fTwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOW3puS+pyAtLT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuW6k+S9jeS9v+eUqOeOhzwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj5FUVVJUE1FTlQgVVNBR0UgVEhJUyBNT05USDwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWPs+S+pyAtLT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bztcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOeZvuWIhuavlCAtLT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIiA+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIHN0eWxlPVwianVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwO3JpZ2h0OiAxdnc7dGV4dC1hbGlnbjogcmlnaHQ7XCIgLS0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj57e2Jhc2VJbmZvLnVzZWRQcn19JTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+5ZCM5q+U5LiK5pyIICsgNSU8L3RleHQ+IC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTthbGlnbi1pdGVtczogZmxleC1zdGFydDtwb3NpdGlvbjogcmVsYXRpdmU7Zm9udC1zaXplOiAxdndcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDov5vluqbmnaEgLS0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO3Bvc2l0aW9uOiByZWxhdGl2ZTttYXJnaW4tdG9wOiA1JTtcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInByb2dyZXNzQmFyXCIgc3R5bGU9XCJ3aWR0aDogODAlO2hlaWdodDogMnZ3O1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwcm9ncmVzc1wiIDpzdHlsZT1cIid3aWR0aDonKyBiYXNlSW5mby51c2VkUHIgKyAnJSdcIj48L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO2JvdHRvbTogMDtyaWdodDogMDtmb250LXNpemU6IDIuNXZ3O2NvbG9yOiAjRkY1NzIyOztcIj57e2Jhc2VJbmZvLnVzZWR9fTwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0PC95LWJveD5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtaWFuLWl0ZW1cIj5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibWlhbi1pdGVtLWJveFwiPlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtcIj5cblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDogMzUlO1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDmipjnur/lm74gLS0+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8eS1ib3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm94LWl0ZW1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5bem5L6nIC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tdGl0bGVcIj7lhaXlh7rlupPnu5/orqE8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS1zdWJUaXRsZVwiPk9SREVSIFNUQVRJU1RJQ1M8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWPs+S+pyAtLT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g55m+5YiG5q+UIC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIiA+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBzdHlsZT1cImp1c3RpZnktY29udGVudDogZmxleC1lbmQ7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtyaWdodDogMXZ3O3RleHQtYWxpZ246IHJpZ2h0O1wiIC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+MzE8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+5LuK5pel6K6i5Y2V5pWwPC90ZXh0PiAtLT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNoYXJ0cy1ib3hcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxxaXVuLWRhdGEtY2hhcnRzIHR5cGU9XCJsaW5lXCIgOmNoYXJ0RGF0YT1cImNoYXJ0c0RhdGFMaW5lMVwiIDplY2hhcnRzSDU9XCJ0cnVlXCIgOmVjaGFydHNBcHA9XCJ0cnVlXCIvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0PC95LWJveD5cblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0PCEtLSBudWxsIC0tPlxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAyJTtcIj48L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDQzJTtcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDx5LWJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJib3gtaXRlbVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3dcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlt6bkvqcgLS0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiaXRlbS10aXRsZVwiPuW6k+WtmOexu+WeizwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXN1YlRpdGxlXCI+SU5DT01FIERBVEU8L3RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIOWPs+S+pyAtLT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g55m+5YiG5q+UIC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIiA+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJpdGVtLXRpdGxlXCI+5LuK5aSpPC90ZXh0PiBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cIml0ZW0tc3ViVGl0bGVcIj5Ub2RheTwvdGV4dD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0g5bemIC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGFydHMtYm94LXJpbmdcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHFpdW4tZGF0YS1jaGFydHMgdHlwZT1cInJpbmdcIiA6b3B0cz1cIntsZWdlbmQ6e3Bvc2l0aW9uOidib3R0b20nfX1cIiA6ZW9wdHM9XCJyaW5nT3B0c1wiIDpjaGFydERhdGE9XCJjaGFydHNEYXRhUGllMlwiIDplY2hhcnRzSDU9XCJ0cnVlXCIgOmVjaGFydHNBcHA9XCJ0cnVlXCIvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSDlj7MgLS0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LXJvdyBzdWItaW5mb1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvZzEucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7XCI+5Zyo5bqTPC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O2ZvbnQtc2l6ZTogMnZ3O1wiPnt7YmFzZUluZm8uc3RvY2tDb3VudH19PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxleC1yb3cgc3ViLWluZm9cIiBzdHlsZT1cIm1hcmdpbi10b3A6IDJ2aDtcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2YxLnBuZ1wiIG1vZGU9XCJhc3BlY3RGaXRcIj48L2ltYWdlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDh2dztoZWlnaHQ6IDR2dztsaW5lLWhlaWdodDogNHZ3O1wiPuepuuW6kzwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztmb250LXNpemU6IDJ2dztcIj57e2Jhc2VJbmZvLmVtcHR5Q291bnR9fTwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsZXgtcm93IHN1Yi1pbmZvXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAydmg7XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9lMS5wbmdcIiBtb2RlPVwiYXNwZWN0Rml0XCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA4dnc7aGVpZ2h0OiA0dnc7bGluZS1oZWlnaHQ6IDR2dztcIj7plIHlrpo8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogOHZ3O2hlaWdodDogNHZ3O2xpbmUtaGVpZ2h0OiA0dnc7Zm9udC1zaXplOiAydnc7XCI+e3tiYXNlSW5mby5ub25lQ291bnR9fTwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdDwveS1ib3g+XG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAyJTtcIj48L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDE4JTtkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO2FsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIDx2aWV3IHN0eWxlPVwiZm9udC1zaXplOiA0dmhcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx06Ieq5Yqo5LuT5bqTV0NT55uR5o6n5bmz5Y+wXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+IC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDUwJTtcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiIHNyYz1cIi4uLy4uL3N0YXRpYy9pbWcvbG9nby1iYWkucG5nXCIgbW9kZT1cImFzcGVjdEZpdFwiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFxuXHRcdFx0PC92aWV3PlxuXHRcdDwvdW5pLXRyYW5zaXRpb24+XG5cdFx0PCEtLSDlhajmnb8v5ouj5paZ5L+h5oGvIC0tPlxuXHRcdDx1bmktdHJhbnNpdGlvbiA6ZHVyYXRpb249XCJkdXJhdGlvblwiIDptb2RlLWNsYXNzPVwiaW5mb01vZGVcIiA6c2hvdz1cImluZm9WaWV3U2hvd1wiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJob21lLXZpZXdcIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoZWFkXCI+XG5cdFx0XHRcdFx0PHRleHQ+e3tpbmZvVGV4dC50aXRsZX19PC90ZXh0PlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwhLS0g5pel5Y6GIC0tPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRpbWUtdG9vbHNcIj57e2NhbGVuZGFyfX08L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWxlZnRcIiBAY2xpY2s9XCJlamVjdGVkKClcIj48L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLXJpZ2h0XCIgQGNsaWNrPVwiZWplY3RlZCgpXCI+PC92aWV3PlxuXHRcdFx0XHQ8IS0tIOS4u+S9kyAtLT5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvLW1haW5cIj5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImluZm8tYm94XCI+XG5cdFx0XHRcdFx0XHQ8eS1ib3g+XG5cdFx0XHRcdFx0XHRcdDwhLS0g5paH5pys5a655ZmoIC0tPlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInRleHQtY29udGVudFwiPlxuXHRcdFx0XHRcdFx0XHRcdDwhLS0gaGVhZCAtLT5cblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN3aXBlci1oZWFkXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAzMCU7XCI+5omY55uY56CBOiB7e2luZm9UZXh0LmJhcmNvZGV9fTwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDIwJTtcIj7lt6XkvZzlj7c6IHt7aW5mb1RleHQud29ya05vfX08L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAzMCU7XCI+5rqQ5bqT5L2NOiB7e2luZm9UZXh0LnNvdXJjZUxvY05vfX08L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiAyMCU7XCI+55uu5qCH56uZOiB7e2luZm9UZXh0LnN0YU5vfX08L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIDx2aWV3IHN0eWxlPVwid2lkdGg6IDEwJTtcIj7mlbDph488L3ZpZXc+IC0tPlxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHQ8IS0tIGJvZHkgLS0+XG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzd2lwZXItYm9keVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBzd2lwZXIg5LiA5Lqb6K+05piOXG5cdFx0XHRcdFx0XHRcdFx0XHRjaXJjdWxhciDmmK/lkKbph4fnlKjooZTmjqXmu5HliqjvvIzljbPmkq3mlL7liLDmnKvlsL7lkI7ph43mlrDlm57liLDlvIDlpLRcblx0XHRcdFx0XHRcdFx0XHRcdHZlcnRpY2FsIOa7keWKqOaWueWQkeaYr+WQpuS4uue6teWQkSBcblx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXktbXVsdGlwbGUtaXRlbXMg5ZCM5pe25pi+56S655qE5ruR5Z2X5pWw6YePIC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHN3aXBlciBjbGFzcz1cInN3aXBlci1ib2R5LW1haW5cIiB2ZXJ0aWNhbD1cInRydWVcIiBcblx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXktbXVsdGlwbGUtaXRlbXM9XCIyXCJcblx0XHRcdFx0XHRcdFx0XHRcdGNpcmN1bGFyPVwidHJ1ZVwiIDphdXRvcGxheT1cInRydWVcIiA6aW50ZXJ2YWw9XCIzMDAwXCIgOmR1cmF0aW9uPVwiMjAwMFwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3dpcGVyLWl0ZW0gY2xhc3M9XCJzd2lwZXItaXRlbVwiIHYtZm9yPVwiKGl0ZW0saSkgaW4gc3dpcGVyTGlzdFwiIDprZXk9XCJpXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj57e2krMX19IC8ge3tzd2lwZXJMaXN0Lmxlbmd0aH19PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gPHZpZXcgc3R5bGU9XCJ3aWR0aDogMzAlO1wiPuaWmeWPtzoge3tpdGVtLm1hdG5yfX08L3ZpZXc+IC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDUwJTsgZm9udC1zaXplOiAzdnc7XCI+54mp5paZ57yW56CBOiB7e2l0ZW0ubWF0bnJ9fTwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogM3Z3O1wiPuWQjeensDoge3tpdGVtLm1ha254fX08L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PCEtLSA8dmlldyBzdHlsZT1cIndpZHRoOiAzMyU7IGZvbnQtc2l6ZTogM3Z3O1wiPueUn+S6p+aXpeacnzoge3tpdGVtLm1hbnVEYXRlfX08L3ZpZXc+IC0tPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDUwJTsgZm9udC1zaXplOiAzdnc7XCI+6KeE5qC8OiB7e2l0ZW0uc3BlY3N9fTwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cIndpZHRoOiA1MCU7IGZvbnQtc2l6ZTogM3Z3O1wiPuaJueasoToge3tpdGVtLmJhdGNofX08L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogNTAlOyBmb250LXNpemU6IDN2dztcIj7plIDllK7ljZXlj7c6IHt7aXRlbS5vcmRlck5vfX08L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogNTAlOyBmb250LXNpemU6IDN2dztcIj7lrqLmiLflkI3np7A6IHt7aXRlbS5jdXN0b21lcn19PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDMzJTsgZm9udC1zaXplOiAzdnc7XCI+5pWw6YePOiB7e2l0ZW0uY291bnR9fTwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9zd2lwZXItaXRlbT5cblx0XHRcdFx0XHRcdFx0XHRcdDwvc3dpcGVyPlxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0PC95LWJveD5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHQ8L3VuaS10cmFuc2l0aW9uPlxuXHRcdDwhLS0g5byC5bi45L+h5oGvIC0tPlxuXHRcdDx1bmktdHJhbnNpdGlvbiA6ZHVyYXRpb249XCJkdXJhdGlvblwiIDptb2RlLWNsYXNzPVwiZXJyb3JJbmZvTW9kZVwiIDpzaG93PVwiZXJyb3JJbmZvVmlld1Nob3dcIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwiZXJyb3ItaW5mby12aWV3XCI+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaGVhZFwiPlxuXHRcdFx0XHRcdDx0ZXh0Pnt7aW5mb1RleHQudGl0bGV9fTwvdGV4dD5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8IS0tIOaXpeWOhiAtLT5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aW1lLXRvb2xzXCI+e3tjYWxlbmRhcn19PC92aWV3PlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1sZWZ0XCI+PC92aWV3PlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ1dHRvbi1yaWdodFwiPjwvdmlldz5cblx0XHRcdFx0PCEtLSDkuLvkvZMgLS0+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1tYWluXCIgPlxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mby1ib3hcIj5cblx0XHRcdFx0XHRcdDx5LWJveD5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvLWJveC10ZXh0XCI+XG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmbGV4LWNvbCBpbmZvLWJveC10ZXh0LWl0ZW1cIj57e2luZm9UZXh0LmVycm9yfX08L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdDwveS1ib3g+XG5cdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC91bmktdHJhbnNpdGlvbj5cblx0XHRcblx0XHQ8IS0tIOiHquWumuS5ieW8ueWHuuWxgiAtLT5cblx0XHQ8dmlldyBjbGFzcz1cImVqZWN0LW1hc2tcIiB2LXNob3c9XCJlamVjdFNob3dcIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwiZWplY3RcIj5cblx0XHRcdFx0PCEtLSDlvLnlh7p0aXRsZSAtLT5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJlamVjdC10aXRsZVwiPuS/ruaUuSAvIOmFjee9rjwvdmlldz5cblx0XHRcdFx0PCEtLSBpbnB1dCAtLT5cblx0XHRcdFx0PHNjcm9sbC12aWV3IHNjcm9sbC15IGNsYXNzPVwiZWplY3QtaW5wdXRcIj5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPmlw77yaPC92aWV3PlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dFwiPlxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiYmFzZUlQXCI+XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+V2NzcG9ydO+8mjwvdmlldz5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VQb3J0XCI+XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PC92aWV3Plx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5XY3NVcmzvvJo8L3ZpZXc+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJiYXNlVXJsXCI+XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+V21zcG9ydO+8mjwvdmlldz5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIndtc1BvcnRcIj5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5XbXNVcmzvvJo8L3ZpZXc+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCI+XG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJ3bXNVcmxcIj5cblx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj5sZWRJZO+8mjwvdmlldz5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXRcIj5cblx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cImJhc2VMZWRJZFwiPlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PC9zY3JvbGwtdmlldz5cblx0XHRcdFx0PCEtLSBidXR0b24gLS0+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiZWplY3QtYnV0dG9uXCI+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidXR0b24taXRlbVwiIEBjbGljaz1cImVqZWN0Q2xvc2VcIj7lj5Yg5raIPC92aWV3PlxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYnV0dG9uLWl0ZW1cIiBAY2xpY2s9XCJlamVjdENvbmZpcm1cIj7noa4g6K6kPC92aWV3PlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3PlxuXHRcdFx0PCEtLSDmj5DnpLrnqpfnpLrkvosgLS0+XG5cdFx0XHQ8dW5pLXBvcHVwIHJlZj1cInVwVmVyc2lvblwiIHR5cGU9XCJkaWFsb2dcIj5cblx0XHRcdFx0PHVuaS1wb3B1cC1kaWFsb2cgOnR5cGU9XCJtc2dUeXBlXCIgdGl0bGU9XCLpgJrnn6VcIiA6Y29udGVudD1cImRpYWxvZ0NvbnRlbnRcIiBAY29uZmlybT1cImRpYWxvZ0NvbmZpcm1cIlxuXHRcdFx0XHRcdEBjbG9zZT1cImRpYWxvZ0Nsb3NlXCI+PC91bmktcG9wdXAtZGlhbG9nPlxuXHRcdFx0PC91bmktcG9wdXA+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IHN0eWxlPVwiY29sb3I6ICNGRkY7cG9zaXRpb246IGZpeGVkO2JvdHRvbTogMTBweDtsZWZ0OiAxMHB4O1wiIHYtc2hvdz1cInRpbWVPdXRcIj5cblx0XHRcdOi/nuaOpei2heaXtu+8jOato+WcqOmHjeaWsOW7uueri+mTvuaOpTo6IHt7dGltZXN9fSBcblx0XHQ8L3ZpZXc+XG5cdDwvdmlldz5cbjwvdGVtcGxhdGU+XG48IS0tIHtcIm1zZ1wiOlwi5pON5L2c5oiQ5YqfXCIsXCJjb2RlXCI6MjAwLFwiZGF0YVwiOlt7XCJ0aXRsZVwiOlwi5YWo5p2/5Ye65bqTXCIsXCJ3b3JrTm9cIjo3NDYwLFwic3RhTm9cIjoxMTAsXCJzb3VyY2VTdGFOb1wiOm51bGwsXCJsb2NOb1wiOm51bGwsXCJzb3VyY2VMb2NOb1wiOlwiMDgwNzEwMlwiLFwibWF0RHRvc1wiOlt7XCJtYXROb1wiOlwiNTA0NjA4MzRcIixcIm1ha254XCI6XCIyMDB4NjDmoYzpnaJcIixcImNvdW50XCI6MjYuMH1dLFwiZW1wdHlNa1wiOmZhbHNlLFwiaW9UeXBlXCI6MTAxfV19IC0tPlxuPHNjcmlwdD5cblx0aW1wb3J0IGRlbW9kYXRhIGZyb20gJ0AvbW9ja2RhdGEvZGVtb2RhdGEuanNvbic7XG5cdGltcG9ydCB5Y3FkYXRhIGZyb20gJ0AvcGFnZXMvaW5kZXgvZGF0YS5qc29uJztcblx0aW1wb3J0IHtXZWJTb2NrZXRDbGllbnR9IGZyb20gXCJAL3N0YXRpYy9qcy9XZWJTb2NrZXRDbGllbnRcIlx0XG5cdGltcG9ydCBXZWJTb2NrZXRVdGlsIGZyb20gJy4vdW5pV2ViU29ja2V0Jztcblx0bGV0IHNvY2tldDtcblx0ZXhwb3J0IGRlZmF1bHQge1xuXHRcdGRhdGEoKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRzZXJpZXM6IFtdLFxuXHRcdFx0XHRob21lVmlld1Nob3c6IHRydWUsXG5cdFx0XHRcdGluZm9WaWV3U2hvdzogZmFsc2VcdCxcblx0XHRcdFx0ZXJyb3JJbmZvVmlld1Nob3c6IGZhbHNlLFxuXHRcdFx0XHRob21lTW9kZTogW10sXG5cdFx0XHRcdGluZm9Nb2RlOiBbXSxcblx0XHRcdFx0ZXJyb3JJbmZvTW9kZTogW10sXG5cdFx0XHRcdGJhc2VJbmZvOiB7XG5cdFx0XHRcdFx0eERpc3RhbmNlOiAxLFxuXHRcdFx0XHRcdHlEaXN0YW5jZTogMixcblx0XHRcdFx0XHR4RHVyYXRpb246IDMsXG5cdFx0XHRcdFx0eUR1cmF0aW9uOiA0LFxuXHRcdFx0XHRcdHVzZWRQcjogNTAsXG5cdFx0XHRcdFx0dXNlZDogMzUzNyxcblx0XHRcdFx0XHRzdG9ja0NvdW50OiAnJyxcblx0XHRcdFx0XHRlbXB0eUNvdW50OiAnJyxcblx0XHRcdFx0XHRub25lQ291bnQ6ICcnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjaGFydHNEYXRhOiB7XG5cdFx0XHRcdFx0XCJMaW5lXCI6IHtcblx0XHRcdFx0XHRcdFwiY2F0ZWdvcmllc1wiOiBbXSxcblx0XHRcdFx0XHRcdFwic2VyaWVzXCI6IFtdXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcIlBpZVwiOiB7XG5cdFx0XHRcdFx0XHRcInNlcmllc1wiOiBbe1xuXHRcdFx0XHRcdFx0XHRcImRhdGFcIjogW11cblx0XHRcdFx0XHRcdH1dXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdFx0ZHVyYXRpb246IDMwMCxcblx0XHRcdFx0Y2FsZW5kYXI6ICcnLFxuXHRcdFx0XHRyaW5nT3B0czp7fSxcblx0XHRcdFx0Y2hhcnRzRGF0YUxpbmUxOiB7fSxcblx0XHRcdFx0Y2hhcnRzRGF0YVBpZTI6IHt9LFxuXHRcdFx0XHRmb250U2l6ZTogJycsXG5cdFx0XHRcdGhlaWdodDogJycsXG5cdFx0XHRcdHNob3dDaGFydHM6IGZhbHNlLFxuXHRcdFx0XHRlamVjdFNob3c6IGZhbHNlLFxuXHRcdFx0XHRiYXNlSVA6ICcnLFxuXHRcdFx0XHRiYXNlUG9ydDogJycsXG5cdFx0XHRcdGJhc2VMZWRJZDogJycsXG5cdFx0XHRcdGJhc2VDcm5JZDogJycsXG5cdFx0XHRcdGJhc2VVcmw6ICcnLFxuXHRcdFx0XHRpbmZvOiBudWxsLFxuXHRcdFx0XHRlcnJvcjogbnVsbCxcblx0XHRcdFx0aW5mb1R5cGU6IDAsXG5cdFx0XHRcdHRleHQ6ICcnLFxuXHRcdFx0XHRpbmZvVGV4dDoge1xuXHRcdFx0XHRcdHRpdGxlOiAnJyxcblx0XHRcdFx0XHRzdGFObzogXCJcIixcblx0XHRcdFx0XHRtYXRucjogXCJcIixcblx0XHRcdFx0XHRtYWtueDogXCJcIixcblx0XHRcdFx0XHRzcGVjczogXCJcIixcblx0XHRcdFx0XHRjb3VudDogXCJcIixcblx0XHRcdFx0XHRlcnJvcjogXCJcIixcblx0XHRcdFx0XHRiYXJjb2RlOiBcIlwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHN3aXBlckxpc3Q6IFtdLFxuXHRcdFx0XHR0aW1lT3V0OiBmYWxzZSxcblx0XHRcdFx0dGltZXM6IDAsXG5cdFx0XHRcdGN1cnJEYXRlOiAnJyxcblx0XHRcdFx0bG9jTGlzdDpbXSxcdFxuXHRcdFx0XHRvbGRIb3VyczonJyxcblx0XHRcdFx0b2xkTWluOicnLFxuXHRcdFx0XHRzb2NrZXRDbGllbnQ6IG51bGwsXG5cdFx0XHRcdG1lc3NhZ2VzOiBbXSxcblx0XHRcdFx0dmVyc2lvbjonJyxcblx0XHRcdFx0c29ja2V0VXJsOicnLFxuXHRcdFx0XHRtc2dUeXBlOiAnc3VjY2VzcycsXG5cdFx0XHRcdGZpbGVuYW1lOiAnJyxcblx0XHRcdFx0ZGlhbG9nQ29udGVudDogJycsXG5cdFx0XHRcdHdtc1VybDonJyxcblx0XHRcdFx0d21zUG9ydDonJ1xuXHRcdFx0XHRcblx0XHRcdH1cblx0XHR9LFxuXHRcdG9uU2hvdygpIHtcblx0XHRcdC8vIOmakOiXj+aXtumXtCznlLXph48s5L+h5Y+3562JXG5cdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcblx0XHRcdHBsdXMubmF2aWdhdG9yLnNldEZ1bGxzY3JlZW4odHJ1ZSlcblx0XHRcdC8vICNlbmRpZlxuXHRcdFx0dGhpcy5nZXRWZXJzaW9uKClcblx0XHR9LFxuXHRcdG1vdW50ZWQoKSB7XG5cdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdGNvbnN0IEJhc2VJUCA9IHVuaS5nZXRTdG9yYWdlU3luYygnQmFzZUlwJyk7XG5cdFx0XHRjb25zdCBCYXNlTGVkSWQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VMZWRJZCcpO1xuXHRcdFx0Y29uc3QgQmFzZVBvcnQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyk7XG5cdFx0XHRjb25zdCBCYXNlQ3JuSWQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VDcm5JZCcpO1xuXHRcdFx0Y29uc3QgUFJPSiA9IHVuaS5nZXRTdG9yYWdlU3luYygnVVBST0onKTtcblx0XHRcdGNvbnN0IFdNU1VSTCA9IHVuaS5nZXRTdG9yYWdlU3luYygnd21zVXJsJyk7XG5cdFx0XHRjb25zdCBXTVNQT1JUID0gdW5pLmdldFN0b3JhZ2VTeW5jKCd3bXNQb3J0Jyk7XG5cdFx0XHR0aGF0LmJhc2VVcmwgPSBQUk9KXG5cdFx0XHR0aGF0LmJhc2VJUCA9IEJhc2VJUFxuXHRcdFx0dGhhdC5iYXNlTGVkSWQgPSBCYXNlTGVkSWRcblx0XHRcdHRoYXQuYmFzZVBvcnQgPSBCYXNlUG9ydFxuXHRcdFx0dGhhdC5iYXNlQ3JuSWQgPSBCYXNlQ3JuSWRcblx0XHRcdHRoYXQud21zVXJsID0gV01TVVJMXG5cdFx0XHR0aGF0Lndtc1BvcnQgPSBXTVNQT1JUXG5cdFx0XHQvLyB0aGlzLmdldFVybCgpXG5cdFx0fSxcblx0XHRjcmVhdGVkKCkge1xuXHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRjb25zdCBCYXNlSVAgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ0Jhc2VJcCcpO1xuXHRcdFx0Y29uc3QgQmFzZUxlZElkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlTGVkSWQnKTtcblx0XHRcdGNvbnN0IEJhc2VQb3J0ID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlUG9ydCcpO1xuXHRcdFx0Y29uc3QgQmFzZUNybklkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdCYXNlQ3JuSWQnKTtcblx0XHRcdGNvbnN0IFBST0ogPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ1VQUk9KJyk7XG5cdFx0XHRjb25zdCBXTVNVUkwgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3dtc1VybCcpO1xuXHRcdFx0Y29uc3QgV01TUE9SVCA9IHVuaS5nZXRTdG9yYWdlU3luYygnd21zUG9ydCcpO1xuXHRcdFx0dGhhdC5iYXNlVXJsID0gUFJPSlxuXHRcdFx0dGhhdC5iYXNlSVAgPSBCYXNlSVBcblx0XHRcdHRoYXQuYmFzZUxlZElkID0gQmFzZUxlZElkXG5cdFx0XHR0aGF0LmJhc2VQb3J0ID0gQmFzZVBvcnRcblx0XHRcdHRoYXQuYmFzZUNybklkID0gQmFzZUNybklkXG5cdFx0XHR0aGF0Lndtc1VybCA9IFdNU1VSTFxuXHRcdFx0dGhhdC53bXNQb3J0ID0gV01TUE9SVFxuXHRcdFx0dGhhdC51bmlXZWJTb2NrZXQoKTtcblx0XHRcdC8vIHRoYXQud2ViU29ja2VySW5pdCgpXG5cdFx0fSxcblx0XHRvbkxvYWQoKSB7XHRcdFx0XG5cdFx0XHRzZXRJbnRlcnZhbCgoKT0+e1xuXHRcdFx0XHR0aGlzLmdldFNlcnZlckRhdGEoKVxuXHRcdFx0XHQvLyB0aGlzLmluaXRsaW5lQ2hhcnQoKVxuXHRcdFx0XHQvLyB0aGlzLmluaXRQaWVDaGFydCgpXG5cdFx0XHRcdC8vIHRoaXMuZ2V0T3RoZXIoKVxuXHRcdFx0XHQvLyAvLyB0aGlzLmdldERhdGUoKVxuXHRcdFx0XHQvLyB0aGlzLmdldERhdGUyKClcblx0XHRcdFx0Ly8gdGhpcy5nZXRJbmZvKClcblx0XHRcdFx0Ly8gdGhpcy5nZXRFcnJvcigpXG5cdFx0XHRcdC8vIHRoaXMuZ2V0SW5mbzIoKVxuXHRcdFx0XHQvLyB0aGlzLmdldEVycm9yMigpXG5cdFx0XHRcdC8vIHRoaXMuZ2V0VXJsKClcblx0XHRcdFx0dGhpcy5jb250cm9sbGVyKClcblx0XHRcdFx0Ly8gdGhpcy5zdGF0aXN0aWNhbE1vZGVsKClcblx0XHRcdFx0Ly8g5rWL6K+V55SoXG5cdFx0XHRcdFxuXHRcdFx0fSwxMDAwKVxuXHRcdFx0XG5cdFx0XHRzZXRJbnRlcnZhbCgoKT0+IHtcdFxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0cGx1cy5ydW50aW1lLnJlc3RhcnQoKTtcblx0XHRcdFx0fSwxMDApXG5cdFx0XHRcdFxuXHRcdFx0fSwxMDAwKjYwKjYwKjQpXHJcblx0XHRcdFxyXG5cdFx0XHQvLyDmr4/lsI/ml7bop6blj5HkuIDmrKHlnoPlnL7lm57mlLZcclxuXHRcdFx0Y29uc3QgbWVtb3J5Q2xlYW5lcklkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG5cdFx0XHRcclxuXHRcdFx0XHRpZiAocGx1cy5vcy5uYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdhbmRyb2lkJykge1xyXG5cdFx0XHRcdFx0Ly8g5by65Yi26Kem5Y+RIEdDXHJcblx0XHRcdFx0XHRwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoJ2phdmEubGFuZy5TeXN0ZW0nKTtcclxuXHRcdFx0XHRcdHBsdXMuYW5kcm9pZC5pbnZva2UoJ2phdmEubGFuZy5TeXN0ZW0nLCAnZ2MnKTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmiYvliqjop6blj5EgR0MnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0XHRcclxuXHRcdFx0XHQvLyDmuIXnkIbkuI3lho3pnIDopoHnmoTlpKflnovmlbDmja7lr7nosaFcclxuXHRcdFx0XHRpZiAodGhpcy5vbGREYXRhICYmIHRoaXMub2xkRGF0YS5sZW5ndGggPiAxMDApIHtcclxuXHRcdFx0XHRcdHRoaXMub2xkRGF0YSA9IFtdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSwgMzAwMCoxMCk7IC8vIOavj+Wwj+aXtuaJp+ihjOS4gOasoVxuXHRcdFx0XG5cdFx0XHQvLyBzZXRJbnRlcnZhbCgoKT0+IHtcblx0XHRcdC8vIFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0Ly8gXHRcdHZhciB0aW1lID0gbmV3IERhdGUoKTtcblx0XHRcdC8vIFx0XHR2YXIgaGggPSB0aW1lLmdldEhvdXJzKCk7XG5cdFx0XHQvLyBcdFx0dmFyIG1tID0gdGltZS5nZXRNaW51dGVzKCk7XG5cdFx0XHQvLyBcdFx0aWYoaGggPiB0aGlzLm9sZEhvdXJzICYmIG1tID50aGlzLm9sZE1pbiAmJiB0aGlzLm9sZE1pbiAtIG1tIDwgNTUpe1xuXHRcdFx0Ly8gXHRcdFx0cGx1cy5ydW50aW1lLnJlc3RhcnQoKTtcblx0XHRcdC8vIFx0XHR9XG5cdFx0XHQvLyBcdFx0aWYobW0gPnRoaXMub2xkTWluICYmIG1tIC0gdGhpcy5vbGRNaW4gPjIpe1xuXHRcdFx0Ly8gXHRcdFx0cGx1cy5ydW50aW1lLnJlc3RhcnQoKTtcblx0XHRcdC8vIFx0XHR9XG5cdFx0XHQvLyBcdH0sMTAwKVxuXHRcdFx0XHRcblx0XHRcdC8vIH0sMTAwMCozMClcblx0XHR9LFxuXHRcdG1ldGhvZHM6IHtcblx0XHRcdHVuaVdlYlNvY2tldCgpe1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdHRoYXQuY29tbW9uVXJsID0gdGhhdC5iYXNlSVAgKyAnOicgK3RoYXQuYmFzZVBvcnQgKyBcIi9cIiArdGhhdC5iYXNlVXJsXG5cdFx0XHRcdHRoYXQuc29ja2V0VXJsID0gXCJ3czovL1wiK3RoYXQuY29tbW9uVXJsK1wiL2xlZC9cIit0aGF0LmJhc2VMZWRJZFxuXHRcdFx0XHQvLyDliJvlu7pXZWJTb2NrZXTlrp7kvotcblx0XHRcdFx0ICAgIHRoYXQuc29ja2V0Q2xpZW50ID0gbmV3IFdlYlNvY2tldFV0aWwodGhhdC5zb2NrZXRVcmwsIHtcblx0XHRcdFx0ICAgICAgLy8g5b+D6Lez6Ze06ZqU77yM6buY6K6kMzDnp5Jcblx0XHRcdFx0ICAgICAgaGVhcnRiZWF0SW50ZXJ2YWw6IDMwMDAwLFxuXHRcdFx0XHQgICAgICAvLyDph43ov57pl7TpmpTvvIzpu5jorqQz56eSXG5cdFx0XHRcdCAgICAgIHJlY29ubmVjdEludGVydmFsOiAzMDAwLFxuXHRcdFx0XHQgICAgICAvLyDmnIDlpKfph43ov57mrKHmlbDvvIwtMeihqOekuuaXoOmZkOmHjei/nlxuXHRcdFx0XHQgICAgICBtYXhSZWNvbm5lY3RBdHRlbXB0czogLTEsXHRcdFx0XHQgICAgICBcblx0XHRcdFx0ICAgICAgLy8g5raI5oGv5Zue6LCDXG5cdFx0XHRcdCAgICAgIG9uTWVzc2FnZTogKHJlcykgPT4ge1xuXHRcdFx0XHQgICAgICAgIHRyeSB7XG5cdFx0XHRcdCAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XHRcdFx0XHQgICAgICAgICAgXG5cdFx0XHRcdCAgICAgICAgICB0aGF0LnNob3dEYXRlKGRhdGEpXG5cdFx0XHRcdCAgICAgICAgICAvLyDlpITnkIbmtojmga8uLi5cblx0XHRcdFx0ICAgICAgICB9IGNhdGNoIChlKSB7XG5cdFx0XHRcdCAgICAgICAgICBjb25zb2xlLmVycm9yKCfop6PmnpDmtojmga/lpLHotKUnLCBlKTtcblx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdCAgICAgIH0sXG5cdFx0XHRcdCAgICAgIC8vIOi/nuaOpeaJk+W8gOWbnuiwg1xuXHRcdFx0XHQgICAgICBvbk9wZW46IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdCAgdGhhdC50aW1lT3V0ID0gZmFsc2Vcblx0XHRcdFx0XHRcdCAgdGhhdC50aW1lcyA9IDBcblx0XHRcdFx0ICAgICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V05bey6L+e5o6lJywgcmVzKTtcdFxuXHRcdFx0XHQgICAgICB9LFxuXHRcdFx0XHQgICAgICAvLyDov57mjqXplJnor6/lm57osINcblx0XHRcdFx0ICAgICAgb25FcnJvcjogKGVycm9yKSA9PiB7XG5cdFx0XHRcdCAgICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V06ZSZ6K+vJywgZXJyb3IpO1xuXHRcdFx0XHQgICAgICB9LFxuXHRcdFx0XHQgICAgICAvLyDov57mjqXlhbPpl63lm57osINcblx0XHRcdFx0ICAgICAgb25DbG9zZTogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0ICB0aGF0LnRpbWVPdXQgPSB0cnVlXG5cdFx0XHRcdFx0XHQgIHRoYXQudGltZXMgPSB0aGF0LnRpbWVzKzFcblx0XHRcdFx0XHRcdCAgdGhhdC5pbmZvVHlwZSA9IDBcblx0XHRcdFx0ICAgICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V05bey5YWz6ZetJywgcmVzKTtcblx0XHRcdFx0ICAgICAgfSxcblx0XHRcdFx0ICAgICAgLy8g6YeN6L+e5Zue6LCDXG5cdFx0XHRcdCAgICAgIG9uUmVjb25uZWN0OiAoaW5mbykgPT4ge1xuXHRcdFx0XHQgICAgICAgIGNvbnNvbGUubG9nKGBXZWJTb2NrZXTph43ov54oJHtpbmZvLmF0dGVtcHRzfS8ke2luZm8ubWF4QXR0ZW1wdHN9KWApO1xuXHRcdFx0XHQgICAgICB9XG5cdFx0XHRcdCAgICB9KTtcblx0XHRcdFx0ICAgIFxuXHRcdFx0XHQgICAgLy8g5bu656uL6L+e5o6lXG5cdFx0XHRcdCAgICB0aGF0LnNvY2tldENsaWVudC5jb25uZWN0KCk7XG5cdFx0XHR9LFxuXHRcdFx0Ly8g5Y+R6YCB5raI5oGvXG5cdFx0XHQgICAgc2VuZE1lc3NhZ2UoY29udGVudCkge1xuXHRcdFx0ICAgICAgY29uc3QgbWVzc2FnZSA9IHtcblx0XHRcdCAgICAgICAgdHlwZTogJ2NoYXQnLFxuXHRcdFx0ICAgICAgICBjb250ZW50OiBjb250ZW50LFxuXHRcdFx0ICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KClcblx0XHRcdCAgICAgIH07XG5cdFx0XHQgICAgICBcblx0XHRcdCAgICAgIHRoaXMuc29ja2V0Q2xpZW50LnNlbmQobWVzc2FnZSlcblx0XHRcdCAgICAgICAgLnRoZW4oKCkgPT4ge1xuXHRcdFx0ICAgICAgICAgIGNvbnNvbGUubG9nKCfmtojmga/lj5HpgIHmiJDlip8nKTtcblx0XHRcdCAgICAgICAgfSlcblx0XHRcdCAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcblx0XHRcdCAgICAgICAgICBjb25zb2xlLmVycm9yKCfmtojmga/lj5HpgIHlpLHotKUnLCBlcnJvcik7XG5cdFx0XHQgICAgICAgIH0pO1xuXHRcdFx0ICAgIH0sXG5cdFx0XHR3ZWJTb2NrZXJJbml0KCl7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcblx0XHRcdFx0XG5cdFx0XHRcdGlmKHRoYXQuYmFzZUlQID09PSAnJyAmJiB0aGF0LmJhc2VQb3J0ID09PSAnJyAmJiB0aGF0LmJhc2VVcmwgPT09JycgKXtcblx0XHRcdFx0XHR0aGF0LnRpbWVPdXQgPSB0cnVlXG5cdFx0XHRcdFx0dGhhdC50aW1lcyA9IHRoYXQudGltZXMrMVxuXHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdFx0dGhhdC5jb21tb25VcmwgPSB0aGF0LmJhc2VJUCArICc6JyArdGhhdC5iYXNlUG9ydCArIFwiL1wiICt0aGF0LmJhc2VVcmxcblx0XHRcdFx0bGV0IHNvY2tldFVybCA9IFwid3M6Ly9cIit0aGF0LmNvbW1vblVybCtcIi9sZWQvXCIrdGhhdC5iYXNlTGVkSWRcblx0XHRcdFx0XHRcdC8vIHNvY2tldFVybCA9IFwid3M6Ly8xMC4wLjEwMC4xNTA6ODA4MC9ndGN0dS9sZWQvMTEzXCJcblx0XHRcdFx0Y29uc3Qgd3MgPSBuZXcgV2ViU29ja2V0Q2xpZW50KHNvY2tldFVybCk7XG5cdFx0XHRcdHdzLmNvbm5lY3QoKVxuXHRcdFx0XHRcblx0XHRcdFx0Y29uc29sZS5sb2cod3MpXHRcdFxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdHdzLm9uY2xvc2UoKCkgPT57XG5cdFx0XHRcdFx0XG5cdFx0XHRcdH0pXG5cdFx0XHRcdFxuXHRcdFx0XHR3cy5vbm1lc3NhZ2UoKG1zZyk9Pntcblx0XHRcdFx0IHRoYXQudGltZU91dCA9IGZhbHNlXG5cdFx0XHRcdCBsZXQgZGF0YSA9IEpTT04ucGFyc2UobXNnLmRhdGEpXG5cdFx0XHRcdCB0aGF0LnNob3dEYXRlKGRhdGEpXG5cdFx0XHRcdCBcblx0XHRcdFx0fSlcblx0XHRcdFx0XG5cdFx0XHR9LFxuXHRcdFx0c2hvd0RhdGUoZGF0YSl7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdGlmKGRhdGEudHlwZSA9PT0gXCJkZWZhdWx0XCIpe1xuXHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5QaWUuc2VyaWVzWzBdLmRhdGEgPSBkYXRhLnBpZVxuXHRcdFx0XHRcdHRoYXQuYmFzZUluZm8uc3RvY2tDb3VudCA9IGRhdGEuc3RvY2tDdW50XG5cdFx0XHRcdFx0dGhhdC5iYXNlSW5mby5lbXB0eUNvdW50ID0gZGF0YS5lbXB0eUNvdW50XG5cdFx0XHRcdFx0dGhhdC5iYXNlSW5mby5ub25lQ291bnQgPWRhdGEubm9uZUNvdW50XG5cdFx0XHRcdFx0dGhhdC5iYXNlSW5mby51c2VkID0gZGF0YS51c2VkXG5cdFx0XHRcdFx0dGhhdC5iYXNlSW5mby51c2VkUHIgPSBkYXRhLnVzZWRQclxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdHRoYXQuY2hhcnRzRGF0YS5MaW5lLmNhdGVnb3JpZXMgPSBbXG5cdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTExKSx0aGF0LmdldERhdGVGb3JtYXQoLTEwKSx0aGF0LmdldERhdGVGb3JtYXQoLTkpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtOCksXG5cdFx0XHRcdFx0XHR0aGF0LmdldERhdGVGb3JtYXQoLTcpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtNiksdGhhdC5nZXREYXRlRm9ybWF0KC01KSx0aGF0LmdldERhdGVGb3JtYXQoLTQpLFxuXHRcdFx0XHRcdFx0dGhhdC5nZXREYXRlRm9ybWF0KC0zKSx0aGF0LmdldERhdGVGb3JtYXQoLTIpLHRoYXQuZ2V0RGF0ZUZvcm1hdCgtMSksdGhhdC5nZXREYXRlRm9ybWF0KDApLF1cblx0XHRcdFx0XHR0aGF0LmNoYXJ0c0RhdGEuTGluZS5zZXJpZXMgPSBkYXRhLnJvd3Ncblx0XHRcdFx0XHR0aGF0LmNhbGVuZGFyID0gZGF0YS55ZWFyICsgXCLlubRcIiArIGRhdGEubW9udGggKyBcIuaciFwiICsgZGF0YS5kYXkgKyBcIuaXpSBcIiArIGRhdGEuaG91ciArIFwiOlwiICsgZGF0YS5taW51dGUgKyBcIjpcIiArIGRhdGEuc2Vjb25kICsgXCIgXCIgKyBkYXRhLndlZWtcblx0XHRcdFx0XHR0aGF0LmN1cnJEYXRlID0gZGF0YS55ZWFyICsgXCIvXCIgKyBkYXRhLm1vbnRoICsgXCIvXCIgKyBkYXRhLmRheVxuXHRcdFx0XHRcdHRoYXQubG9jTGlzdCA9IGRhdGEuaW52ZW50b3J5RGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5vbGRIb3VycyA9IGRhdGEuaG91clxuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5vbGRNaW4gPSBkYXRhLm1pbnV0ZVxuXHRcdFx0XHR9ZWxzZSBpZihkYXRhLnR5cGUgPT09IFwiZXJyb3JcIil7XG5cdFx0XHRcdFx0aWYgKGRhdGEuZXJyTXNnICYmIGRhdGEuZXJyTXNnICE9PSBcIlwiKSB7XG5cdFx0XHRcdFx0XHR2YXIgZXJyb3JJbmZvID0gZGF0YS5lcnJNc2dcblx0XHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDNcblx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5YW25LuW5L+h5oGvXCIgXG5cdFx0XHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuZXJyb3IgPSBlcnJvckluZm9cblx0XHRcdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMlxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9IFwi5YW25LuW5L+h5oGvXCJcblx0XHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fWVsc2UgaWYoZGF0YS50eXBlID09PSBcInRhc2tcIil7XG5cdFx0XHRcdFx0XHRcdFx0XHQgaWYgKGRhdGEudGFza0xpc3QgJiYgZGF0YS50YXNrTGlzdCAhPT0gXCJcIiAmJiBkYXRhLnRhc2tMaXN0Lmxlbmd0aCAhPTApIHtcblx0XHRcdFx0XHRcdFx0XHRcdCBcdGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQgXHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCBcdC8vIGluZm9UeXBlMTrlj6rmnInmi6PmlpnnrYnkv6Hmga9cblx0XHRcdFx0XHRcdFx0XHRcdCBcdHRoYXQuaW5mb1R5cGUgPSAxXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHRpZiAoZGF0YS50YXNrTGlzdFswXS5pb1R5cGUgPT09IDEwMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0IFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+WFqOadv+WHuuW6kydcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH0gZWxzZSBpZihkYXRhLnRhc2tMaXN0WzBdLmlvVHlwZSA9PT0gMTAzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5ouj5paZ5Ye65bqTJ1xuXHRcdFx0XHRcdFx0XHRcdFx0IFx0fSBlbHNlIGlmKGRhdGEudGFza0xpc3RbMF0uaW9UeXBlID09PSAxMDcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnm5jngrnlh7rlupMnXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHR9IGVsc2UgaWYoZGF0YS50YXNrTGlzdFswXS5pb1R5cGUgPT09IDEpIHtcblx0XHRcdFx0XHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhaXlupMnXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHR9IGVsc2UgaWYoZGF0YS50YXNrTGlzdFswXS5pb1R5cGUgPT09IDEwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQgXHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5YWl5bqTJ1xuXHRcdFx0XHRcdFx0XHRcdFx0IFx0fSBlbHNlIGlmKGRhdGEudGFza0xpc3RbMF0uaW9UeXBlID09PSAxMTApIHtcblx0XHRcdFx0XHRcdFx0XHRcdCBcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlh7rlupMnXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHR9IGVsc2UgaWYoZGF0YS50YXNrTGlzdFswXS5pb1R5cGUgPT09IDEwNCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0IFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+W5tuadv+WHuuW6kydcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH1lbHNlIGlmKGRhdGEudGFza0xpc3RbMF0uaW9UeXBlID09PSA1NCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0IFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+W5tuadv+WFpeW6kydcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCBcdHRoYXQuaW5mb1RleHQuYmFyY29kZSA9IGRhdGEudGFza0xpc3RbMF0uYmFyY29kZVxuXHRcdFx0XHRcdFx0XHRcdFx0IFx0dGhhdC5pbmZvVGV4dC53b3JrTm8gPSBkYXRhLnRhc2tMaXN0WzBdLndvcmtOb1xuXHRcdFx0XHRcdFx0XHRcdFx0IFx0dGhhdC5pbmZvVGV4dC5zb3VyY2VMb2NObyA9IGRhdGEudGFza0xpc3RbMF0uc291cmNlTG9jTm9cblx0XHRcdFx0XHRcdFx0XHRcdCBcdHRoYXQuaW5mb1RleHQuc3RhTm8gPSBkYXRhLnRhc2tMaXN0WzBdLnN0YU5vXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHR0aGF0LnN3aXBlckxpc3QgPSBkYXRhLnRhc2tMaXN0WzBdLm1hdER0b3Ncblx0XHRcdFx0XHRcdFx0XHRcdCBcdC8vIHRoYXQuaW5mb1RleHQubWF0bnIgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLm1hdG5yXG5cdFx0XHRcdFx0XHRcdFx0XHQgXHQvLyB0aGF0LmluZm9UZXh0LnNwZWNzID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5zcGVjc1xuXHRcdFx0XHRcdFx0XHRcdFx0IFx0Ly8gdGhhdC5pbmZvVGV4dC5tYWtueCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWFrbnhcblx0XHRcdFx0XHRcdFx0XHRcdCBcdC8vIHRoYXQuaW5mb1RleHQuY291bnQgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLmNvdW50XG5cdFx0XHRcdFx0XHRcdFx0XHQgfSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdCBcdGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQgXHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdCBcdH1cblx0XHRcdFx0XHRcdFx0XHRcdCBcdHRoYXQuaW5mb1R5cGUgPSAwXG5cdFx0XHRcdFx0XHRcdFx0XHQgfVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0c3RhdGlzdGljYWxNb2RlbCgpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sb2NEZXRsL3BkYS9zdGF0aXN0aWNhbE1vZGVsXCIsXG5cdFx0XHRcdFx0bWV0aG9kOidHRVQnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcy5kYXRhKVxuXHRcdFx0XHRcdFx0XHR0aGF0LmxvY0xpc3QgPSByZXMuZGF0YVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRnZXRVcmwoKSB7XG5cdFx0XHRcdHRoaXMuY29tbW9uVXJsID0gdGhpcy5iYXNlSHR0cCArIHRoaXMuYmFzZUlQICsgJzonICt0aGlzLmJhc2VQb3J0ICsgXCIvXCIgK3RoaXMuYmFzZVVybFx0XHRcdFx0XG5cdFx0XHR9LFxuXHRcdFx0Z2V0U2VydmVyRGF0YSgpIHtcblx0XHRcdFx0dGhpcy5jaGFydHNEYXRhTGluZTE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0c0RhdGEuTGluZSkpXG5cdFx0XHRcdHRoaXMuY2hhcnRzRGF0YVBpZTI9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0c0RhdGEuUGllKSlcblx0XHRcdH0sXG5cdFx0XHQvLyDojrflj5bplJnor6/kv6Hmga9cblx0XHRcdGdldEluZm8yKCkge1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdFx0dmFyIHJlc3VsdCA9IHljcWRhdGEuZGF0YUluZm8yXG5cdFx0XHRcdHZhclx0cmVzID0gcmVzdWx0LmRhdGFcblx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XG5cdFx0XHRcdFx0aWYgKHRoYXQuaW5mb1R5cGUgPT0gMiB8fCB0aGF0LmluZm9UeXBlID09IDMpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gaW5mb1R5cGUxOuWPquacieaLo+aWmeetieS/oeaBr1xuXHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAxXG5cdFx0XHRcdFx0aWYgKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTAxKSB7XG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+WFqOadv+WHuuW6kydcblx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDMpIHtcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5qOA5paZ5Ye65bqTJ1xuXHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwNykge1xuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnm5jngrnlh7rlupMnXG5cdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMSkge1xuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICflhaXlupMnXG5cdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTApIHtcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn56m65omY5YWl5bqTJ1xuXHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDExMCkge1xuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlh7rlupMnXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuYmFyY29kZSA9IHJlcy5kYXRhWzBdLmJhcmNvZGVcblx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LndvcmtObyA9IHJlcy5kYXRhWzBdLndvcmtOb1xuXHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuc291cmNlTG9jTm8gPSByZXMuZGF0YVswXS5zb3VyY2VMb2NOb1xuXHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuc3RhTm8gPSByZXMuZGF0YVswXS5zdGFOb1xuXHRcdFx0XHRcdHRoYXQuc3dpcGVyTGlzdCA9IHJlcy5kYXRhWzBdLm1hdER0b3Ncblx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0Lm1hdG5yID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5tYXRuclxuXHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQuc3BlY3MgPSByZXMuZGF0YVswXS5tYXREdG9zWzBdLnNwZWNzXG5cdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5tYWtueCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWFrbnhcblx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LmNvdW50ID0gcmVzLmRhdGFbMF0ubWF0RHRvc1swXS5jb3VudFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRnZXRFcnJvcjIgKCkge1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdFx0bGV0IHJlc3VsdCA9IHljcWRhdGEuZGF0YUVycm9yMlxuXHRcdFx0XHR2YXJcdHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xuXHRcdFx0XHRcdHZhciBlcnJvckluZm8gPSByZXMuZGF0YVxuXHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcblx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAzXG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIiBcblx0XHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXG5cdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDJcblx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIlxuXHRcdFx0XHRcdC8vIHRoYXQuaW5mb1RleHQudGl0bGUgPSBcIuW8guW4uFwiXG5cdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5lcnJvciA9IGVycm9ySW5mb1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDEpIHtcblx0XHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Z2V0SW5mbygpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9sZWRcIixcblx0XHRcdFx0XHRtZXRob2Q6XCJHRVRcIixcblx0XHRcdFx0XHRkYXRhOiB7bGVkSWQ6dGhhdC5iYXNlTGVkSWR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVPdXQgPSBmYWxzZVxuXHRcdFx0XHRcdFx0dGhhdC50aW1lcyA9IDBcblx0XHRcdFx0XHRcdHZhclx0cmVzID0gcmVzdWx0LmRhdGFcblx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YSAhPT0gXCJcIikge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAyIHx8IHRoYXQuaW5mb1R5cGUgPT0gMykge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQvLyBpbmZvVHlwZTE65Y+q5pyJ5ouj5paZ562J5L+h5oGvXG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAxXG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEwMSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQudGl0bGUgPSAn5YWo5p2/5Ye65bqTJ1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLmRhdGFbMF0uaW9UeXBlID09PSAxMDMpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+ajgOaWmeWHuuW6kydcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTA3KSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnm5jngrnlh7rlupMnXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuZGF0YVswXS5pb1R5cGUgPT09IDEpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+WFpeW6kydcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTApIHtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gJ+epuuaJmOWFpeW6kydcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhWzBdLmlvVHlwZSA9PT0gMTEwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC50aXRsZSA9ICfnqbrmiZjlh7rlupMnXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5iYXJjb2RlID0gcmVzLmRhdGFbMF0uYmFyY29kZVxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LndvcmtObyA9IHJlcy5kYXRhWzBdLndvcmtOb1xuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnNvdXJjZUxvY05vID0gcmVzLmRhdGFbMF0uc291cmNlTG9jTm9cblx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVGV4dC5zdGFObyA9IHJlcy5kYXRhWzBdLnN0YU5vXG5cdFx0XHRcdFx0XHRcdHRoYXQuc3dpcGVyTGlzdCA9IHJlcy5kYXRhWzBdLm1hdER0b3Ncblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5tYXRuciA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWF0bnJcblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5zcGVjcyA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uc3BlY3Ncblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5tYWtueCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0ubWFrbnhcblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5pbmZvVGV4dC5jb3VudCA9IHJlcy5kYXRhWzBdLm1hdER0b3NbMF0uY291bnRcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGF0LmluZm9UeXBlID09IDIgfHwgdGhhdC5pbmZvVHlwZSA9PSAzKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1R5cGUgPSAwXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsKGVycikge1xuXHRcdFx0XHRcdFx0dGhhdC50aW1lT3V0ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0dGhhdC50aW1lcyA9IHRoYXQudGltZXMrMVxuXHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDBcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdGdldEVycm9yKCkge1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogdGhhdC5jb21tb25VcmwgKyBcIi9tb25pdG9yL2xlZC9lcnJvclwiLFxuXHRcdFx0XHRcdGRhdGE6IHtsZWRJZDp0aGF0LmJhc2VMZWRJZH0sXG5cdFx0XHRcdFx0bWV0aG9kOlwiR0VUXCIsXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcblx0XHRcdFx0XHRcdHRoYXQudGltZU91dCA9IGZhbHNlXG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVzID0gMFxuXHRcdFx0XHRcdFx0dmFyXHRyZXMgPSByZXN1bHQuZGF0YVxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhICYmIHJlcy5kYXRhICE9PSBcIlwiKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBlcnJvckluZm8gPSByZXMuZGF0YVxuXHRcdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDNcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIiBcblx0XHRcdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlvILluLhcIlxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaW5mb1RleHQuZXJyb3IgPSBlcnJvckluZm9cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMlxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlhbbku5bkv6Hmga9cIlxuXHRcdFx0XHRcdFx0XHQvLyB0aGF0LmluZm9UZXh0LnRpdGxlID0gXCLlvILluLhcIlxuXHRcdFx0XHRcdFx0XHR0aGF0LmluZm9UZXh0LmVycm9yID0gZXJyb3JJbmZvXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhhdC5pbmZvVHlwZSA9PSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhhdC5pbmZvVHlwZSA9IDBcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWwoZXJyKSB7XG5cdFx0XHRcdFx0XHR0aGF0LnRpbWVPdXQgPSB0cnVlXG5cdFx0XHRcdFx0XHR0aGF0LmluZm9UeXBlID0gMFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0XG5cdFx0XHR9LFxuXHRcdFx0Ly8g5o6n5Yi25ZmoXG5cdFx0XHRjb250cm9sbGVyKCkge1xuXHRcdFx0XHRzd2l0Y2godGhpcy5pbmZvVHlwZSkge1xuXHRcdFx0XHRcdC8vIOacieS/oeaBryDkvYYg5rKh5pyJ6ZSZ6K+v5L+h5oGvXG5cdFx0XHRcdFx0Y2FzZSAwOiBcblx0XHRcdFx0XHRcdGlmICh0aGlzLmVycm9ySW5mb1ZpZXdTaG93KSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaG9tZU1vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmluZm9WaWV3U2hvdykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IGZhbHNlXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaG9tZU1vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmVycm9ySW5mb1ZpZXdTaG93ICYmIHRoaXMuaW5mb1ZpZXdTaG93KSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IGZhbHNlXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaG9tZU1vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdGNhc2UgMTogXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5ob21lVmlld1Nob3cpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lVmlld1Nob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5lcnJvckluZm9WaWV3U2hvdykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0Ly8g5pyJ5L+h5oGvIOS4lCDmnInplJnor6/kv6Hmga9cblx0XHRcdFx0XHRjYXNlIDI6XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5ob21lVmlld1Nob3cpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lVmlld1Nob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmhvbWVNb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb1ZpZXdTaG93ID0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0XHR9LDEwMDApXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuaW5mb1ZpZXdTaG93KSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdFx0dGhpcy5pbmZvTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdC8vIOacieS/oeaBryDkuJQg5pyJ6ZSZ6K+v5L+h5oGvXG5cdFx0XHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuaG9tZVZpZXdTaG93KSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdFx0dGhpcy5ob21lTW9kZSA9IFsnZmFkZScsICdzbGlkZS1ib3R0b20nXVxuXHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9WaWV3U2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmVycm9ySW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLmluZm9WaWV3U2hvdykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmluZm9WaWV3U2hvdyA9IGZhbHNlXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5mb01vZGUgPSBbJ2ZhZGUnLCAnc2xpZGUtYm90dG9tJ11cblx0XHRcdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSB0cnVlXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lcnJvckluZm9Nb2RlID0gWydmYWRlJywgJ3NsaWRlLWJvdHRvbSddXG5cdFx0XHRcdFx0XHRcdH0sMTAwMClcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdH0sXG5cdFx0XHQvLyDkuLvlsY/luZVcblx0XHRcdGhhbmRsZSh0eXBlKSB7XG5cdFx0XHRcdHRoaXMuaG9tZVZpZXdTaG93ID0gIXRoaXMuaG9tZVZpZXdTaG93XG5cdFx0XHRcdHRoaXMubW9kZUNsYXNzID0gdHlwZVxuXHRcdFx0fSxcblx0XHRcdC8vIOaLo+aWmVxuXHRcdFx0aGFuZGxlMSh0eXBlKSB7XG5cdFx0XHRcdHRoaXMuaW5mb1ZpZXdTaG93ID0gIXRoaXMuaW5mb1ZpZXdTaG93XG5cdFx0XHRcdHRoaXMubW9kZUNsYXNzID0gdHlwZVxuXHRcdFx0fSxcblx0XHRcdC8vIOW8guW4uFxuXHRcdFx0aGFuZGxlMih0eXBlKSB7XG5cdFx0XHRcdHRoaXMuZXJyb3JJbmZvVmlld1Nob3cgPSAhdGhpcy5lcnJvckluZm9WaWV3U2hvd1xuXHRcdFx0XHR0aGlzLm1vZGVDbGFzcyA9IHR5cGVcblx0XHRcdH0sXG5cdFx0XHQvLyDphY3nva5cblx0XHRcdGVqZWN0ZWQgKCkge1xuXHRcdFx0XHR0aGlzLmVqZWN0U2hvdyA9IHRydWVcblx0XHRcdH0sXG5cdFx0XHQvLyDlj5bmtojphY3nva5cblx0XHRcdGVqZWN0Q2xvc2UoKSB7XG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHQvLyDnoa7orqTphY3nva5cblx0XHRcdGVqZWN0Q29uZmlybSgpIHtcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlSXAnLCB0aGlzLmJhc2VJUCk7XG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnQmFzZUxlZElkJywgdGhpcy5iYXNlTGVkSWQpO1xuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ0Jhc2VQb3J0Jyx0aGlzLmJhc2VQb3J0KTtcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdCYXNlQ3JuSWQnLHRoaXMuYmFzZUNybklkKTtcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdVUFJPSicsdGhpcy5iYXNlVXJsKTtcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCd3bXNVcmwnLHRoaXMud21zVXJsKTtcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCd3bXNQb3J0Jyx0aGlzLndtc1BvcnQpO1xuXHRcdFx0XHR0aGlzLmdldFVybCgpXG5cdFx0XHRcdHRoaXMuZWplY3RTaG93ID0gZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHQvLyDml6XljoYg5pyN5Yqh5ZmoXG5cdFx0XHRnZXREYXRlMigpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9kYXRlXCIsXG5cdFx0XHRcdFx0bWV0aG9kOlwiR0VUXCIsXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcblx0XHRcdFx0XHRcdHZhciByZXMgPSByZXN1bHQuZGF0YS5kYXRhXG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0XG5cdFx0XHQvLyDml6XljoZcblx0XHRcdGdldERhdGUoKSB7XG5cdFx0XHRcdHZhciBkdCA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdHZhciB5ZWFyLG1vbnRoLGRheSxob3VycyxtaW51dGVzLHNlY29uZHMsd2Vla3Ncblx0XHRcdFx0eWVhciA9IGR0LmdldEZ1bGxZZWFyKCk7XG5cdFx0XHRcdG1vbnRoID0gKGR0LmdldE1vbnRoKCkrMSkgPCAxMCA/ICcwJysgKGR0LmdldE1vbnRoKCkrMSkgOiAoZHQuZ2V0TW9udGgoKSsxKTtcblx0XHRcdFx0ZGF5ID0gZHQuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcrZHQuZ2V0RGF0ZSgpIDogZHQuZ2V0RGF0ZSgpO1xuXHRcdFx0XHRob3VycyA9IGR0LmdldEhvdXJzKCkgPCAxMCA/ICcwJyArIGR0LmdldEhvdXJzKCkgOiBkdC5nZXRIb3VycygpO1xuXHRcdFx0XHRtaW51dGVzID0gZHQuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkdC5nZXRNaW51dGVzKCkgOiBkdC5nZXRNaW51dGVzKCk7XG5cdFx0XHRcdHNlY29uZHMgPSBkdC5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGR0LmdldFNlY29uZHMoKSA6IGR0LmdldFNlY29uZHMoKTsgXG5cdFx0XHRcdHdlZWtzID0gZHQuZ2V0RGF5KCk7IFxuXHRcdFx0XHRzd2l0Y2ggKHdlZWtzKSB7XG5cdFx0XHRcdFx0Y2FzZSAwOiB3ZWVrcyA9IFwi5pif5pyf5pelXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMTogd2Vla3MgPSBcIuaYn+acn+S4gFwiOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDI6IHdlZWtzID0gXCLmmJ/mnJ/kuoxcIjsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAzOiB3ZWVrcyA9IFwi5pif5pyf5LiJXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgNDogd2Vla3MgPSBcIuaYn+acn+Wbm1wiOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDU6IHdlZWtzID0gXCLmmJ/mnJ/kupRcIjsgYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdCA6IHdlZWtzID0gXCLmmJ/mnJ/lha1cIjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmNhbGVuZGFyID0geWVhciArIFwi5bm0XCIgKyBtb250aCArIFwi5pyIXCIgKyBkYXkgKyBcIuaXpSBcIiArIGhvdXJzICsgXCI6XCIgKyBtaW51dGVzICsgXCI6XCIgKyBzZWNvbmRzICsgXCIgXCIgKyB3ZWVrc1xuXHRcdFx0fSxcblx0XHRcdGdldERhdGVGb3JtYXQodmFsdWUpIHtcblx0XHRcdFx0dmFyIGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJEYXRlKTsvLyDojrflj5blvZPliY3ml7bpl7Rcblx0XHRcdFx0ZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgdmFsdWUpOy8vIOiuvue9ruWkqeaVsCAtMSDlpKlcblx0XHRcdFx0dmFyIG0gPSBkYXRlLmdldE1vbnRoKCkgKyAxXG5cdFx0XHRcdHZhciBkID0gZGF0ZS5nZXREYXRlKClcblx0XHRcdFx0dmFyIG5ld0RhdGUgPSBtICsgJy0nICsgZFxuXHRcdFx0XHRyZXR1cm4gbmV3RGF0ZVxuXHRcdFx0fSxcblx0XHRcdC8qKioqKioqKioqKioqKiog5oqY57q/5Zu+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXHRcdFx0aW5pdGxpbmVDaGFydCgpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IHRoYXQuY29tbW9uVXJsICsgXCIvbW9uaXRvci9saW5lL2NoYXJ0c1wiLFxuXHRcdFx0XHRcdG1ldGhvZDonR0VUJyxcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0LyoqKioqKioqKioqKioqKiDppbzlm74gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cdFx0XHRpbml0UGllQ2hhcnQoKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3IvbG9jL3JlcFwiLFxuXHRcdFx0XHRcdG1ldGhvZDonR0VUJyxcblx0XHRcdFx0XHRzdWNjZXNzKHJlc3VsdCkge1xuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5kYXRhXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHR0aGF0LmNoYXJ0c0RhdGEuUGllLnNlcmllc1swXS5kYXRhID0gcmVzLmRhdGEucGllXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8uc3RvY2tDb3VudCA9IHJlcy5kYXRhLnN0b2NrQ3VudFxuXHRcdFx0XHRcdFx0XHR0aGF0LmJhc2VJbmZvLmVtcHR5Q291bnQgPSByZXMuZGF0YS5lbXB0eUNvdW50XG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ubm9uZUNvdW50ID0gcmVzLmRhdGEubm9uZUNvdW50XG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8udXNlZCA9IHJlcy5kYXRhLnVzZWRcblx0XHRcdFx0XHRcdFx0dGhhdC5iYXNlSW5mby51c2VkUHIgPSByZXMuZGF0YS51c2VkUHJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0Z2V0T3RoZXIoKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpc1xuXHRcdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdFx0dXJsOiB0aGF0LmNvbW1vblVybCArIFwiL21vbml0b3Ivb3RoZXJcIixcblx0XHRcdFx0XHRkYXRhOiB7XG5cdFx0XHRcdFx0XHRjcm5JZDogdGhhdC5iYXNlQ3JuSWQsIFxuXHRcdFx0XHRcdFx0bGVkSWQ6IHRoYXQuYmFzZUxlZElkLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXN1bHQpIHtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XG5cdFx0XHRcdFx0XHR2YXIgcmVzID0gcmVzdWx0LmRhdGFcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ueERpc3RhbmNlID0gcmVzLmRhdGEueERpc3RhbmNlXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ueURpc3RhbmNlID0gcmVzLmRhdGEueURpc3RhbmNlXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ueER1cmF0aW9uID0gcmVzLmRhdGEueER1cmF0aW9uXG5cdFx0XHRcdFx0XHRcdHRoYXQuYmFzZUluZm8ueUR1cmF0aW9uID0gcmVzLmRhdGEueUR1cmF0aW9uXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHJlcy5jb2RlID09PSA0MDMpIHtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0Ly/mo4DmtYvlvZPliY3lubPlj7DvvIzlpoLmnpzmmK/lronljZPliJnlkK/liqjlronljZPmm7TmlrBcblx0XHRcdGdldFZlcnNpb24oKSB7XG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcblx0XHRcdFx0dW5pLmdldFN5c3RlbUluZm8oe1xuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMucGxhdGZvcm0gPT0gXCJhbmRyb2lkXCIpIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5BbmRyb2lkQ2hlY2tVcGRhdGUoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5BbmRyb2lkQ2hlY2tVcGRhdGUoKTtcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHQvLyDojrflj5blvZPliY3niYjmnKzlj7dcblx0XHRcdEFuZHJvaWRDaGVja1VwZGF0ZSgpIHtcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHRwbHVzLnJ1bnRpbWUuZ2V0UHJvcGVydHkocGx1cy5ydW50aW1lLmFwcGlkLCAod2d0aW5mbykgPT4ge1xuXHRcdFx0XHRcdHRoYXQudmVyc2lvbiA9IHdndGluZm8udmVyc2lvbiAvL+WuouaIt+err+eJiOacrOWPt1xuXHRcdFx0XHR9KVxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0dGhhdC5nZXRVcGRhdGVWZXJzaW9uKClcblx0XHRcdFx0fSwxMDApXG5cdFx0XHR9LFxuXHRcdFx0Ly8g5qCh6aqM54mI5pysXG5cdFx0XHRnZXRVcGRhdGVWZXJzaW9uKCkge1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcblx0XHRcdFx0bGV0IHR5cGUgPSAxXG5cdFx0XHRcdGlmICh0aGF0LmJhc2VVcmwgPT0gJ2h0dHA6Ly91bmRlZmluZWQ6dW5kZWZpbmVkL3VuZGVmaW5lZCcpIHtcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCB3bXMgPSAnaHR0cDovLycrIHRoYXQuYmFzZUlQICsgJzonICt0aGF0Lndtc1BvcnQgKyBcIi9cIiArdGhhdC53bXNVcmxcblx0XHRcdFx0Y29uc29sZS5sb2cod21zKVxuXHRcdFx0XHRsZXQgdXJsID0gd21zICsgJy9hcHBWZXJzaW9uL2NoZWNrVXBkYXRlLycgKyB0aGF0LnZlcnNpb24gKyAnLycgKyB0eXBlXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IHVybCxcblx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xuXHRcdFx0XHRcdFx0dmFyIHJlcyA9IHJlcy5kYXRhXG5cdFx0XHRcdFx0XHRpZiAocmVzLmRhdGEpIHtcblx0XHRcdFx0XHRcdFx0dGhhdC5maWxlbmFtZSA9IHJlcy5kYXRhLnBhdGhcblx0XHRcdFx0XHRcdFx0dGhhdC5kaWFsb2dDb250ZW50ID0gJ+WPkeeOsOaWsOeJiOacrDonICsgcmVzLmRhdGEudmVyc2lvbiArICcsIOaYr+WQpueri+WNs+abtOaWsCdcblx0XHRcdFx0XHRcdFx0dGhhdC4kcmVmcy51cFZlcnNpb24ub3BlbigpXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcmVzLm1zZyxcblx0XHRcdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogJ3RvcCdcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRkaWFsb2dDb25maXJtKCkge1xuXHRcdFx0XHR0aGlzLiRyZWZzLnVwVmVyc2lvbi5jbG9zZSgpXG5cdFx0XHRcdHRoaXMuZG93bldndCgpXG5cdFx0XHR9LFxuXHRcdFx0ZGlhbG9nQ2xvc2UoKSB7XG5cdFx0XHRcdHRoaXMuJHJlZnMudXBWZXJzaW9uLmNsb3NlKClcblx0XHRcdH0sXG5cdFx0XHRkb3duV2d0KCkge1xuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdGNvbnN0IHdtcyA9ICdodHRwOi8vJysgdGhhdC5iYXNlSVAgKyAnOicgK3RoYXQud21zUG9ydCArIFwiL1wiICt0aGF0Lndtc1VybFxuXHRcdFx0XHRjb25zdCBkb3dubG9hZFVybCA9IHdtcyArIFwiL2FwcFZlcnNpb24vZG93bmxvYWRBcHAvXCIgKyB0aGF0LmZpbGVuYW1lXG5cdFx0XHRcdHVuaS5zaG93TG9hZGluZyh7XG5cdFx0XHRcdFx0dGl0bGU6ICfmm7TmlrDkuK3igKbigKYnXG5cdFx0XHRcdH0pXG5cdFx0XHRcdGNvbnN0IGRvd25sb2FkVGFzayA9IHVuaS5kb3dubG9hZEZpbGUoeyAvL+aJp+ihjOS4i+i9vVxuXHRcdFx0XHRcdHVybDogZG93bmxvYWRVcmwsIC8v5LiL6L295Zyw5Z2AXG5cdFx0XHRcdFx0dGltZW91dDogMTAwMCAqIDMwLCAvLzMw56eS6LaF5pe25pe26Ze0XG5cdFx0XHRcdFx0c3VjY2VzczogZG93bmxvYWRSZXN1bHQgPT4geyAvL+S4i+i9veaIkOWKn1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZG93bmxvYWRSZXN1bHQpO1xuXHRcdFx0XHRcdFx0dGhhdC5zaG93ZG93bkxpbmUgPSBmYWxzZVxuXHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHRpZiAoZG93bmxvYWRSZXN1bHQuc3RhdHVzQ29kZSA9PSAyMDApIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6ICfmm7TmlrDmiJDlip/vvIznoa7lrprnjrDlnKjph43lkK/lkJfvvJ8nLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiAn6YeN5ZCvJyxcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtQ29sb3I6ICcjRUU4RjU3Jyxcblx0XHRcdFx0XHRcdFx0XHRzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXMuY29uZmlybSA9PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBsdXMucnVudGltZS5pbnN0YWxsKCAvL+WuieijhVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRvd25sb2FkUmVzdWx0LnRlbXBGaWxlUGF0aCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yY2U6IHRydWVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bmN0aW9uKHJlcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXRpbHMuc2hvd1RvYXN0KCfmm7TmlrDmiJDlip/vvIzph43lkK/kuK0nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBsdXMucnVudGltZS5yZXN0YXJ0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93ZG93bkxpbmUgPSBmYWxzZVxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTon6K+35YWI5LiK5Lyg5a6J6KOF5YyFJyxcblx0XHRcdFx0XHRcdFx0XHRpY29uOiAnZXJyb3InXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsOiBlcnIgPT4ge1xuXHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHR0aGF0LnNob3dkb3duTGluZSA9IGZhbHNlXG5cdFx0XHRcdFx0XHR0aGF0LiR1LnRvYXN0KGRvd25sb2FkUmVzdWx0LmVyck1zZylcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGNvbXBsZXRlOiBjb20gPT4ge1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhjb20pXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFxuXHRcdFx0XHQvLyDkuIvovb3ov5vluqZcblx0XHRcdFx0ZG93bmxvYWRUYXNrLm9uUHJvZ3Jlc3NVcGRhdGUocmVzID0+IHtcblx0XHRcdFx0XHR0aGF0LmRvd25sb2FkTnVtID0gcmVzLnByb2dyZXNzXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ+S4i+i9vei/m+W6picgKyB0aGF0LmRvd25sb2FkTnVtKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdH1cblx0XHRcblx0fVxuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cblx0LyogQGltcG9ydCB1cmwoXCIuLi8uLi9zdGF0aWMvY3NzL2NvbW1vbi5jc3NcIik7ICovXG5cdEBpbXBvcnQgdXJsKFwiaG9tZS5jc3NcIik7XG5cdC8qIOWIlyAqL1xuXHQuZmxleC1jb2wge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0fVxuXHQvKiDooYwgKi9cblx0LmZsZXgtcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdH1cblx0XG5cdC5jb250YWluZXJ7XG5cdFx0d2lkdGg6IDEwMHZ3O1xuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICMwMDE2M0U7XG5cdFx0Y29sb3I6ICNmZmY7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFxuXHR9XG5cdC8qIOS4u+inhuWbviAqL1xuXHQuaG9tZS12aWV3IHtcblx0XHR3aWR0aDogMTAwdnc7XG5cdFx0bWluLWhlaWdodDogMTAwdmg7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL3N0YXRpYy9iYWNrZ3JvdW5kLnBuZyk7XG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDB2dyAxMDB2aDtcblx0fVxuXHQuaG9tZS1yaWdodCB7XG5cdFx0d2lkdGg6IDUwdnc7XG5cdFx0aGVpZ2h0OiA4OXZoO1xuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6IGNhZGV0Ymx1ZTsgKi9cblx0fVxuXHQuaG9tZS1yaWdodC1ib3gge1xuXHRcdHdpZHRoOiA5OCU7XG5cdFx0aGVpZ2h0OiA5OCU7XG5cdH1cblx0LmhlYWQge1xuXHRcdHdpZHRoOiAxMDB2dztcblx0XHRoZWlnaHQ6IDExdmg7XG5cdFx0Zm9udC1zaXplOjR2dztcblx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XG5cdH1cblx0LnRpbWUtdG9vbHMge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRyaWdodDogMiU7XG5cdFx0dG9wOiAyJTtcblx0XHRmb250LXNpemU6MXZ3O1xuXHRcdHRyYW5zZm9ybTogc2NhbGUoMC44KTtcblx0fVxuXHQuYnV0dG9uLWxlZnQge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL3JpZ2h0LnBuZyk7XG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG5cdFx0dG9wOiAxLjglO1xuXHRcdGxlZnQ6IDIxLjMlO1xuXHRcdHdpZHRoOiAxMy41JTtcblx0XHRoZWlnaHQ6IDguNSU7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xuXHR9XG5cdC5idXR0b24tcmlnaHQge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL3JpZ2h0LnBuZyk7XG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG5cdFx0dG9wOiAxLjglO1xuXHRcdGxlZnQ6IDY1JTtcblx0XHR3aWR0aDogMTMuNSU7XG5cdFx0aGVpZ2h0OiA4LjUlO1xuXHR9XG5cdC5pbWctYm94IHtcblx0XHRoZWlnaHQ6IDIzdnc7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzY2NjY2NjsgKi9cblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRmb250LXNpemU6IDF2dztcblx0fVxuXHQuaXRlbS1pbWcge1xuXHRcdHdpZHRoOiA1MCU7XG5cdFx0bWFyZ2luLXRvcDogNSU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwMGZmZmY7ICovXG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHR9XG5cdC5kaXN0YW5jZSB7XG5cdFx0XG5cdH1cblx0Lml0ZW0taW1nIGltYWdlIHtcblx0XHRoZWlnaHQ6IDV2dztcblx0XHR3aWR0aDogNXZ3O1xuXHR9XG5cdC5wcm9ncmVzc0JhciB7XG5cdFx0bWFyZ2luLXRvcDogOSU7XG5cdFx0Lyogd2lkdGg6IDEwMCU7ICovXG5cdFx0aGVpZ2h0OiAyMCU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzIzMzc1MTtcblx0XHRib3JkZXItcmFkaXVzOiA1dnc7XG5cdH1cblx0LnByb2dyZXNzIHtcblx0XHQvKiB3aWR0aDogOTAlOyAqL1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkY1NzIyO1xuXHRcdGJvcmRlci1yYWRpdXM6IDV2dztcblx0fVxuXHQuY2hhcnRzLWJveCB7XG5cdCAgd2lkdGg6IDgwJTtcblx0ICBoZWlnaHQ6IDI0dmg7XG5cdCAgbWFyZ2luLWxlZnQ6IDEwJTtcblx0fSBcblx0LmNoYXJ0cy1ib3gtcmluZyB7XG5cdFx0d2lkdGg6IDYwJTtcblx0XHRoZWlnaHQ6IDI0dmg7XG5cdFx0LyogYmFja2dyb3VuZC1jb2xvcjogIzAwZmZmZjsgKi9cblx0fVxuXHQuc3ViLWluZm8ge1xuXHRcdGZvbnQtc2l6ZTogMS41dnc7XG5cdH1cblx0LnN1Yi1pbmZvIGltYWdlIHtcblx0XHR3aWR0aDogMy41dnc7XG5cdFx0aGVpZ2h0OiAzLjV2dztcblx0fVxuXHRcblx0XG5cdFxuXHRcblx0Lyog5YWx55SoICovXG5cdC5tYWluIHtcblx0XHR3aWR0aDogMTAwdnc7XG5cdFx0aGVpZ2h0OiA4OHZoO1xuXHRcdG1hcmdpbi10b3A6IDF2aDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFxuXHR9XG5cdC5taWFuLWl0ZW0ge1xuXHRcdHdpZHRoOiA1MCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR9XG5cdC5taWFuLWl0ZW0tYm94IHtcblx0XHR3aWR0aDogOTglO1xuXHRcdGhlaWdodDogOTglO1xuXHR9XG5cdC5ib3gtaXRlbSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWFyZ2luLXRvcDogNCU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcblx0fVxuXHQuaXRlbS10aXRsZSB7XG5cdFx0Zm9udC1zaXplOjEuNXZ3O1xuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdH1cblx0LnZlcnNpb257XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDElO1xuXHRcdHRvcDogMSU7XG5cdFx0Zm9udC1zaXplOjF2dztcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XG5cdH1cblx0Lml0ZW0tc3ViVGl0bGUge1xuXHRcdGZvbnQtc2l6ZTowLjV2dztcblx0XHR0ZXh0LWluZGVudDogMGVtO1xuXHR9XG5cdC5pdGVtLXRleHQge1xuXHRcdGZvbnQtc2l6ZTogMXZ3O1xuXHRcdHRleHQtaW5kZW50OiAyZW07XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDFweDtcblx0XHRsaW5lLWhlaWdodDogM3ZoO1xuXHR9XG5cdFxuXHQvKiDlhajmnb8v5ouj5paZ5L+h5oGvICovXG5cdC5pbmZvLXZpZXcge1xuXHRcdHdpZHRoOiAxMDB2dztcblx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vc3RhdGljL2JhY2tncm91bmQucG5nKTtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IDEwMHZ3IDEwMHZoO1xuXHR9XG5cdC5pbmZvLW1haW4ge1xuXHRcdHdpZHRoOiAxMDB2dztcblx0XHRoZWlnaHQ6IDg4dmg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHR9XG5cdC5pbmZvLWJveCB7XG5cdFx0d2lkdGg6IDk4JTtcblx0XHRoZWlnaHQ6IDk4JTtcblx0fVxuXHQvKiDlvILluLjkv6Hmga8gKi9cblx0LmVycm9yLWluZm8tdmlldyB7XG5cdFx0d2lkdGg6IDEwMHZ3O1xuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9zdGF0aWMvYmFja2dyb3VuZC5wbmcpO1xuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwdncgMTAwdmg7XG5cdH1cblx0XG5cdC8qIOW8ueWHujrphY3nva7ljLrln58gKi9cblx0LmVqZWN0LW1hc2sge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHotaW5kZXg6IDk5OTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHRcblx0fVxuXHQuZWplY3R7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHdpZHRoOiA0NXZ3O1xuXHRcdGhlaWdodDogNDV2aDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdGJvcmRlci1yYWRpdXM6IDJyZW07XG5cdH1cblx0LmVqZWN0LXRpdGxlIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDV2aDtcblx0XHRsaW5lLWhlaWdodDogNnZoO1xuXHRcdGZvbnQtc2l6ZTogM3ZoO1xuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0Y29sb3I6IFx0IzYwNjI2Njtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblx0LmVqZWN0LWlucHV0IHtcblx0XHRtYXJnaW4tdG9wOiAydmg7XG5cdFx0aGVpZ2h0OiAyNXZoO1xuXHRcdC8qIGJhY2tncm91bmQtY29sb3I6ICMwMDE2M0U7ICovXG5cdFx0Ojotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmV9XG5cdH1cblx0Lml0ZW0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRtYXJnaW46IDF2aCAwIDAgMDtcblx0XHRmb250LXNpemU6IDEuNXZ3O1xuXHRcdGNvbG9yOiAjMzYzNjM2O1xuXHR9XG5cdC5kZXNjIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2lkdGg6IDQwJTtcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRjb2xvcjogIzYwNjI2Njtcblx0XHRcblx0fVxuXHQuaW5wdXQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRwYWRkaW5nLWxlZnQ6IDVweDtcblx0XHRwYWRkaW5nLXJpZ2h0OiA1cHg7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAzdmg7XG5cdFx0Ym9yZGVyOiAwLjF2aCBzb2xpZCAjY2ZkNGRjO1xuXHRcdG1hcmdpbi1yaWdodDogMjAlO1xuXHRcdHRleHQtYWxpZ246IHN0YXJ0O1xuXHR9XG5cdC5lamVjdC1pbnB1dCBpbnB1dCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAzdmg7XG5cdFx0Zm9udC1zaXplOiAxdnc7XG5cdFx0XG5cdFx0XG5cdH1cblx0LmVqZWN0LWJ1dHRvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRib3R0b206IDA7XG5cdFx0aGVpZ2h0OiA2dmg7XG5cdFx0bGluZS1oZWlnaHQ6IDZ2aDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcblx0fVxuXHQuYnV0dG9uLWl0ZW0ge1xuXHRcdHdpZHRoOiA1MCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGZvbnQtc2l6ZTogMS41dnc7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAjOTA5Mzk5O1xuXHR9XG5cdC5idXR0b24taXRlbTpsYXN0LWNoaWxkIHtcblx0XHRjb2xvcjogIzY3QzIzQTtcblx0XHRcblx0XHRib3JkZXItbGVmdDogMXB4IHNvbGlkICNjY2M7XG5cdH1cblx0LmluZm8tYm94LXRleHQge1xuXHRcdHdpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtcblx0XHRkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXHQuaW5mby1ib3gtdGV4dC1pdGVtIHtcblx0XHRoZWlnaHQ6IDIwJTtmb250LXNpemU6IDh2aDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuPC9zdHlsZT4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///117\n"); |
| | | |
| | | /***/ }), |
| | | /* 118 */ |
| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n data: function data() {\n return {\n data: '',\n url: 'http://10.10.10.120:9090/wcs/h5/index.html'\n };\n },\n onShow: function onShow() {\n var that = this;\n uni.getStorage({\n key: \"data\",\n success: function success(e) {\n that.data = e.data;\n }\n });\n // 隐藏时间,电量,信号等\n },\n\n methods: {\n setUrl: function setUrl() {\n if (this.url != '') {\n uni.setStorage({\n key: \"data\",\n data: this.url\n });\n this.data = this.url;\n }\n },\n clearUrl: function clearUrl() {\n this.data = \"\";\n this.url = \"http://10.10.10.120:9090/wcs/h5/index.html\";\n uni.removeStorage({\n key: \"data\"\n });\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvdGVzdC90ZXN0LnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwidXJsIiwib25TaG93IiwidW5pIiwia2V5Iiwic3VjY2VzcyIsInRoYXQiLCJtZXRob2RzIiwic2V0VXJsIiwiY2xlYXJVcmwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQWFBO0VBQ0FBO0lBQ0E7TUFDQUE7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQUM7TUFDQUM7TUFDQUM7UUFDQUM7TUFDQTtJQUNBO0lBQ0E7RUFDQTs7RUFDQUM7SUFDQUM7TUFDQTtRQUNBTDtVQUNBQztVQUNBSjtRQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FTO01BQ0E7TUFDQTtNQUNBTjtRQUNBQztNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEiLCJmaWxlIjoiMTI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3PlxyXG5cdFx0PGJ1dHRvbiBjbGFzcz1cImNsZWFyXCIgQGNsaWNrPVwiY2xlYXJVcmxcIj5DbGVhcjwvYnV0dG9uPlxyXG5cdFx0PHdlYi12aWV3IHYtaWY9XCJkYXRhICE9ICcnXCIgOnNyYz1cImRhdGFcIj48L3dlYi12aWV3PlxyXG5cdFx0XHJcblx0XHQ8dmlldyBzdHlsZT1cIm1hcmdpbi10b3A6IDEwMHB4O1wiIHYtaWY9XCJkYXRhID09ICcnXCI+XHJcblx0XHRcdDxpbnB1dCB2LW1vZGVsPVwidXJsXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIui+k+WFpVVSTFwiPlxyXG5cdFx0XHQ8YnV0dG9uIEBjbGljaz1cInNldFVybFwiPuiuvue9rjwvYnV0dG9uPlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRkYXRhOiAnJyxcclxuXHRcdFx0XHR1cmw6ICdodHRwOi8vMTAuMTAuMTAuMTIwOjkwOTAvd2NzL2g1L2luZGV4Lmh0bWwnXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRvblNob3coKSB7XHJcblx0XHRcdGxldCB0aGF0ID0gdGhpc1xyXG5cdFx0XHR1bmkuZ2V0U3RvcmFnZSh7XHJcblx0XHRcdFx0a2V5OiBcImRhdGFcIixcclxuXHRcdFx0XHRzdWNjZXNzKGUpIHtcclxuXHRcdFx0XHRcdHRoYXQuZGF0YSA9IGUuZGF0YVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdFx0Ly8g6ZqQ6JeP5pe26Ze0LOeUtemHjyzkv6Hlj7fnrYlcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdHNldFVybCgpIHtcclxuXHRcdFx0XHRpZih0aGlzLnVybCAhPSAnJykge1xyXG5cdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2Uoe1xyXG5cdFx0XHRcdFx0XHRrZXk6IFwiZGF0YVwiLFxyXG5cdFx0XHRcdFx0XHRkYXRhOiB0aGlzLnVybFxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdHRoaXMuZGF0YSA9IHRoaXMudXJsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xlYXJVcmwoKSB7XHJcblx0XHRcdFx0dGhpcy5kYXRhID0gXCJcIlxyXG5cdFx0XHRcdHRoaXMudXJsID0gXCJodHRwOi8vMTAuMTAuMTAuMTIwOjkwOTAvd2NzL2g1L2luZGV4Lmh0bWxcIlxyXG5cdFx0XHRcdHVuaS5yZW1vdmVTdG9yYWdlKHtcclxuXHRcdFx0XHRcdGtleTogXCJkYXRhXCJcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuXHQuY2xlYXIge1xyXG5cdFx0cG9zaXRpb246IGZpeGVkO1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0bGVmdDogMDtcclxuXHRcdHotaW5kZXg6IDk5OTk7XHJcblx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuXHRcdGJvcmRlcjogbm9uZTtcclxuXHR9XHJcblx0XHJcblx0LmNsZWFyOmhvdmVyIHtcclxuXHRcdGJhY2tncm91bmQ6ICNmZmY7XHJcblx0fVxyXG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///124\n"); |
| | | eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n data: function data() {\n return {\n data: '',\n url: 'http://10.10.10.120:9090/wcs/h5/index.html'\n };\n },\n onShow: function onShow() {\n var that = this;\n uni.getStorage({\n key: \"data\",\n success: function success(e) {\n that.data = e.data;\n }\n });\n // 隐藏时间,电量,信号等\n },\n\n methods: {\n setUrl: function setUrl() {\n if (this.url != '') {\n uni.setStorage({\n key: \"data\",\n data: this.url\n });\n this.data = this.url;\n }\n },\n clearUrl: function clearUrl() {\n this.data = \"\";\n this.url = \"http://10.10.10.120:9090/wcs/h5/index.html\";\n uni.removeStorage({\n key: \"data\"\n });\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvdGVzdC90ZXN0LnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwidXJsIiwib25TaG93IiwidGhhdCIsInVuaSIsImdldFN0b3JhZ2UiLCJrZXkiLCJzdWNjZXNzIiwiZSIsIm1ldGhvZHMiLCJzZXRVcmwiLCJzZXRTdG9yYWdlIiwiY2xlYXJVcmwiLCJyZW1vdmVTdG9yYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSxlQUVlO0VBQ2RBLElBQUksa0JBQUc7SUFDTixPQUFPO01BQ05BLElBQUksRUFBRSxFQUFFO01BQ1JDLEdBQUcsRUFBRTtJQUNOLENBQUM7RUFDRixDQUFDO0VBQ0RDLE1BQU0sb0JBQUc7SUFDUixJQUFJQyxJQUFJLEdBQUcsSUFBSTtJQUNmQyxHQUFHLENBQUNDLFVBQVUsQ0FBQztNQUNkQyxHQUFHLEVBQUUsTUFBTTtNQUNYQyxPQUFPLG1CQUFDQyxDQUFDLEVBQUU7UUFDVkwsSUFBSSxDQUFDSCxJQUFJLEdBQUdRLENBQUMsQ0FBQ1IsSUFBSTtNQUNuQjtJQUNELENBQUMsQ0FBQztJQUNGO0VBQ0QsQ0FBQzs7RUFDRFMsT0FBTyxFQUFFO0lBQ1JDLE1BQU0sb0JBQUc7TUFDUixJQUFHLElBQUksQ0FBQ1QsR0FBRyxJQUFJLEVBQUUsRUFBRTtRQUNsQkcsR0FBRyxDQUFDTyxVQUFVLENBQUM7VUFDZEwsR0FBRyxFQUFFLE1BQU07VUFDWE4sSUFBSSxFQUFFLElBQUksQ0FBQ0M7UUFDWixDQUFDLENBQUM7UUFDRixJQUFJLENBQUNELElBQUksR0FBRyxJQUFJLENBQUNDLEdBQUc7TUFDckI7SUFDRCxDQUFDO0lBQ0RXLFFBQVEsc0JBQUc7TUFDVixJQUFJLENBQUNaLElBQUksR0FBRyxFQUFFO01BQ2QsSUFBSSxDQUFDQyxHQUFHLEdBQUcsNENBQTRDO01BQ3ZERyxHQUFHLENBQUNTLGFBQWEsQ0FBQztRQUNqQlAsR0FBRyxFQUFFO01BQ04sQ0FBQyxDQUFDO0lBQ0g7RUFDRDtBQUNELENBQUM7QUFBQSIsImZpbGUiOiIxMjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGF0YTogJycsXG5cdFx0XHR1cmw6ICdodHRwOi8vMTAuMTAuMTAuMTIwOjkwOTAvd2NzL2g1L2luZGV4Lmh0bWwnXG5cdFx0fVxuXHR9LFxuXHRvblNob3coKSB7XG5cdFx0bGV0IHRoYXQgPSB0aGlzXG5cdFx0dW5pLmdldFN0b3JhZ2Uoe1xuXHRcdFx0a2V5OiBcImRhdGFcIixcblx0XHRcdHN1Y2Nlc3MoZSkge1xuXHRcdFx0XHR0aGF0LmRhdGEgPSBlLmRhdGFcblx0XHRcdH1cblx0XHR9KVxuXHRcdC8vIOmakOiXj+aXtumXtCznlLXph48s5L+h5Y+3562JXG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRzZXRVcmwoKSB7XG5cdFx0XHRpZih0aGlzLnVybCAhPSAnJykge1xuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZSh7XG5cdFx0XHRcdFx0a2V5OiBcImRhdGFcIixcblx0XHRcdFx0XHRkYXRhOiB0aGlzLnVybFxuXHRcdFx0XHR9KVxuXHRcdFx0XHR0aGlzLmRhdGEgPSB0aGlzLnVybDtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNsZWFyVXJsKCkge1xuXHRcdFx0dGhpcy5kYXRhID0gXCJcIlxuXHRcdFx0dGhpcy51cmwgPSBcImh0dHA6Ly8xMC4xMC4xMC4xMjA6OTA5MC93Y3MvaDUvaW5kZXguaHRtbFwiXG5cdFx0XHR1bmkucmVtb3ZlU3RvcmFnZSh7XG5cdFx0XHRcdGtleTogXCJkYXRhXCJcblx0XHRcdH0pXG5cdFx0fVxuXHR9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///124\n"); |
| | | |
| | | /***/ }), |
| | | /* 125 */ |
| | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n onLaunch: function onLaunch() {\n __f__(\"log\", 'App Launch', \" at App.vue:4\");\n },\n onShow: function onShow() {\n __f__(\"log\", 'App Show', \" at App.vue:7\");\n },\n onHide: function onHide() {\n __f__(\"log\", 'App Hide', \" at App.vue:10\");\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJvbkxhdW5jaCIsIm9uU2hvdyIsIm9uSGlkZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQ2U7RUFDZEEsUUFBUSxFQUFFLG9CQUFXO0lBQ3BCLGFBQVksWUFBWTtFQUN6QixDQUFDO0VBQ0RDLE1BQU0sRUFBRSxrQkFBVztJQUNsQixhQUFZLFVBQVU7RUFDdkIsQ0FBQztFQUNEQyxNQUFNLEVBQUUsa0JBQVc7SUFDbEIsYUFBWSxVQUFVO0VBQ3ZCO0FBQ0QsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjE0Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGRlZmF1bHQge1xuXHRvbkxhdW5jaDogZnVuY3Rpb24oKSB7XG5cdFx0Y29uc29sZS5sb2coJ0FwcCBMYXVuY2gnKVxuXHR9LFxuXHRvblNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdGNvbnNvbGUubG9nKCdBcHAgU2hvdycpXG5cdH0sXG5cdG9uSGlkZTogZnVuY3Rpb24oKSB7XG5cdFx0Y29uc29sZS5sb2coJ0FwcCBIaWRlJylcblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///147\n"); |
| | | |
| | | /***/ }), |
| | | /* 148 */ |
| | | /*!***********************************************************!*\ |
| | | !*** D:/monitor/Monitor-APP/static/js/WebSocketClient.js ***! |
| | | \***********************************************************/ |
| | | /*! no static exports found */ |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebSocketClient = void 0;\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 81));\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 83));\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 85));\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 86));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nvar _dispatcher = __webpack_require__(/*! ./dispatcher */ 149);\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar WebSocketClient = /*#__PURE__*/function (_EventDispatcher) {\n (0, _inherits2.default)(WebSocketClient, _EventDispatcher);\n var _super = _createSuper(WebSocketClient);\n // #socket链接\n\n // #socket实例\n\n // #重连次数\n\n // #最大重连数\n\n // #重连间隔\n // 10 seconds\n // #发送心跳数据间隔\n\n // #计时器id\n\n // #彻底终止ws\n\n // *构造函数\n function WebSocketClient(url) {\n var _this;\n (0, _classCallCheck2.default)(this, WebSocketClient);\n _this = _super.call(this);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"url\", '');\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"socket\", null);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"reconnectAttempts\", 0);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"maxReconnectAttempts\", 20);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"reconnectInterval\", 60000);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"heartbeatInterval\", 1000 * 30);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"heartbeatTimer\", undefined);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"stopWs\", false);\n _this.url = url;\n return _this;\n }\n // >生命周期钩子\n (0, _createClass2.default)(WebSocketClient, [{\n key: \"onopen\",\n value: function onopen(callBack) {\n this.addEventListener('open', callBack);\n }\n }, {\n key: \"onmessage\",\n value: function onmessage(callBack) {\n this.addEventListener('message', callBack);\n }\n }, {\n key: \"onclose\",\n value: function onclose(callBack) {\n this.addEventListener('close', callBack);\n }\n }, {\n key: \"onerror\",\n value: function onerror(callBack) {\n this.addEventListener('error', callBack);\n }\n // >消息发送\n }, {\n key: \"send\",\n value: function send(message) {\n if (this.socket && this.socket.readyState === WebSocket.OPEN) {\n this.socket.send({\n data: message\n });\n } else {\n __f__(\"error\", '[WebSocket] 未连接', \" at static/js/WebSocketClient.js:45\");\n }\n }\n\n // !初始化连接\n }, {\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n if (this.reconnectAttempts === 0) {\n this.log('WebSocket', \"\\u521D\\u59CB\\u5316\\u8FDE\\u63A5\\u4E2D... \".concat(this.url));\n }\n if (this.socket && this.socket.readyState === WebSocket.OPEN) {\n return;\n }\n this.socket = uni.connectSocket({\n url: this.url,\n complete: function complete() {}\n });\n this.socket.onOpen(function (event) {\n _this2.stopWs = false;\n // 重置重连尝试成功连接\n _this2.reconnectAttempts = 0;\n // 在连接成功时停止当前的心跳检测并重新启动\n _this2.startHeartbeat();\n _this2.log('WebSocket', \"\\u8FDE\\u63A5\\u6210\\u529F,\\u7B49\\u5F85\\u670D\\u52A1\\u7AEF\\u6570\\u636E\\u63A8\\u9001[onopen]... \".concat(_this2.url));\n _this2.dispatchEvent('open', event);\n });\n // !websocket连接成功\n // this.socket.onOpen = event => {\t\t\t\n // this.stopWs = false;\n // // 重置重连尝试成功连接\n // this.reconnectAttempts = 0;\n // // 在连接成功时停止当前的心跳检测并重新启动\n // this.startHeartbeat();\t\t\t\n // this.log('WebSocket', `连接成功,等待服务端数据推送[onopen]... ${this.url}`);\n // this.dispatchEvent('open', event);\n // };\n this.socket.onMessage(function (event) {\n _this2.dispatchEvent('message', event);\n _this2.startHeartbeat();\n });\n // this.socket.onMessage = event => {\n // console.log(event)\n // this.dispatchEvent('message', event);\n // this.startHeartbeat();\n // };\n this.socket.onClose(function (event) {\n if (_this2.reconnectAttempts === 0) {\n _this2.log('WebSocket', \"\\u8FDE\\u63A5\\u65AD\\u5F00[onclose]... \".concat(_this2.url));\n }\n if (!_this2.stopWs) {\n _this2.handleReconnect();\n }\n _this2.dispatchEvent('close', event);\n });\n // this.socket.onClose = event => {\n // if (this.reconnectAttempts === 0) {\n // this.log('WebSocket', `连接断开[onclose]... ${this.url}`);\n // }\n // if (!this.stopWs) {\n // this.handleReconnect();\n // }\n // this.dispatchEvent('close', event);\n // };\n this.socket.onError(function (event) {\n if (_this2.reconnectAttempts === 0) {\n _this2.log('WebSocket', \"\\u8FDE\\u63A5\\u5F02\\u5E38[onerror]... \".concat(_this2.url));\n }\n if (!_this2.stopWs) {\n _this2.handleReconnect();\n }\n _this2.closeHeartbeat();\n _this2.dispatchEvent('error', event);\n });\n\n // uni.onSocketError((event)=>{\n // \tconsole.log(\"333\")\n // \tif (this.reconnectAttempts === 0) {\n // \t this.log('WebSocket', `连接异常[onerror]... ${this.url}`);\n // \t}\n // \tif (!this.stopWs) {\n // \t this.handleReconnect();\n // \t}\n // \tthis.closeHeartbeat();\n // \tthis.dispatchEvent('error', event);\n // })\n // this.socket.onError = event => {\n // if (this.reconnectAttempts === 0) {\n // this.log('WebSocket', `连接异常[onerror]... ${this.url}`);\n // }\n // this.closeHeartbeat();\n // this.dispatchEvent('error', event);\n // };\n }\n\n // > 断网重连逻辑\n }, {\n key: \"handleReconnect\",\n value: function handleReconnect() {\n var _this3 = this;\n if (this.reconnectAttempts < this.maxReconnectAttempts) {\n this.reconnectAttempts++;\n this.log('WebSocket', \"\\u5C1D\\u8BD5\\u91CD\\u8FDE... (\".concat(this.reconnectAttempts, \"/\").concat(this.maxReconnectAttempts, \") \").concat(this.url));\n setTimeout(function () {\n _this3.connect();\n }, this.reconnectInterval);\n } else {\n plus.runtime.restart();\n // this.closeHeartbeat();\n // this.log('WebSocket', `最大重连失败,终止重连: ${this.url}`);\n }\n }\n\n // >关闭连接\n }, {\n key: \"close\",\n value: function close() {\n if (this.socket) {\n this.stopWs = true;\n this.socket.close();\n this.socket = null;\n this.removeEventListener('open');\n this.removeEventListener('message');\n this.removeEventListener('close');\n this.removeEventListener('error');\n }\n this.closeHeartbeat();\n }\n\n // >开始心跳检测 -> 定时发送心跳消息\n }, {\n key: \"startHeartbeat\",\n value: function startHeartbeat() {\n var _this4 = this;\n if (this.stopWs) return;\n if (this.heartbeatTimer) {\n this.closeHeartbeat();\n }\n this.heartbeatTimer = setInterval(function () {\n if (_this4.socket) {\n _this4.socket.send({\n data: JSON.stringify({\n type: 'heartBeat',\n data: {}\n })\n });\n _this4.log('WebSocket', '送心跳数据...');\n } else {\n __f__(\"error\", '[WebSocket] 未连接', \" at static/js/WebSocketClient.js:181\");\n }\n }, this.heartbeatInterval);\n }\n\n // >关闭心跳\n }, {\n key: \"closeHeartbeat\",\n value: function closeHeartbeat() {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = undefined;\n }\n }]);\n return WebSocketClient;\n}(_dispatcher.EventDispatcher);\nexports.WebSocketClient = WebSocketClient;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RhdGljL2pzL1dlYlNvY2tldENsaWVudC5qcyJdLCJuYW1lcyI6WyJXZWJTb2NrZXRDbGllbnQiLCJ1cmwiLCJ1bmRlZmluZWQiLCJjYWxsQmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJtZXNzYWdlIiwic29ja2V0IiwicmVhZHlTdGF0ZSIsIldlYlNvY2tldCIsIk9QRU4iLCJzZW5kIiwiZGF0YSIsInJlY29ubmVjdEF0dGVtcHRzIiwibG9nIiwidW5pIiwiY29ubmVjdFNvY2tldCIsImNvbXBsZXRlIiwib25PcGVuIiwiZXZlbnQiLCJzdG9wV3MiLCJzdGFydEhlYXJ0YmVhdCIsImRpc3BhdGNoRXZlbnQiLCJvbk1lc3NhZ2UiLCJvbkNsb3NlIiwiaGFuZGxlUmVjb25uZWN0Iiwib25FcnJvciIsImNsb3NlSGVhcnRiZWF0IiwibWF4UmVjb25uZWN0QXR0ZW1wdHMiLCJzZXRUaW1lb3V0IiwiY29ubmVjdCIsInJlY29ubmVjdEludGVydmFsIiwicGx1cyIsInJ1bnRpbWUiLCJyZXN0YXJ0IiwiY2xvc2UiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGVhcnRiZWF0VGltZXIiLCJzZXRJbnRlcnZhbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0eXBlIiwiaGVhcnRiZWF0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiRXZlbnREaXNwYXRjaGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQStDO0FBQUE7QUFBQSxJQUVsQ0EsZUFBZTtFQUFBO0VBQUE7RUFDeEI7O0VBRUE7O0VBRUE7O0VBRUE7O0VBRUE7RUFDMkI7RUFDM0I7O0VBRUE7O0VBRUE7O0VBRUE7RUFDQSx5QkFBWUMsR0FBRyxFQUFFO0lBQUE7SUFBQTtJQUNiO0lBQVEsa0ZBakJOLEVBQUU7SUFBQSxxRkFFQyxJQUFJO0lBQUEsZ0dBRU8sQ0FBQztJQUFBLG1HQUVFLEVBQUU7SUFBQSxnR0FFTCxLQUFLO0lBQUEsZ0dBRUwsSUFBSSxHQUFHLEVBQUU7SUFBQSw2RkFFWkMsU0FBUztJQUFBLHFGQUVqQixLQUFLO0lBSVYsTUFBS0QsR0FBRyxHQUFHQSxHQUFHO0lBQUM7RUFDbkI7RUFDQTtFQUFBO0lBQUE7SUFBQSxPQUNBLGdCQUFPRSxRQUFRLEVBQUU7TUFDYixJQUFJLENBQUNDLGdCQUFnQixDQUFDLE1BQU0sRUFBRUQsUUFBUSxDQUFDO0lBQzNDO0VBQUM7SUFBQTtJQUFBLE9BQ0QsbUJBQVVBLFFBQVEsRUFBRTtNQUNoQixJQUFJLENBQUNDLGdCQUFnQixDQUFDLFNBQVMsRUFBRUQsUUFBUSxDQUFDO0lBQzlDO0VBQUM7SUFBQTtJQUFBLE9BQ0QsaUJBQVFBLFFBQVEsRUFBRTtNQUNkLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUMsT0FBTyxFQUFFRCxRQUFRLENBQUM7SUFDNUM7RUFBQztJQUFBO0lBQUEsT0FDRCxpQkFBUUEsUUFBUSxFQUFFO01BQ2QsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVELFFBQVEsQ0FBQztJQUM1QztJQUNBO0VBQUE7SUFBQTtJQUFBLE9BQ0EsY0FBS0UsT0FBTyxFQUFFO01BQ1YsSUFBSSxJQUFJLENBQUNDLE1BQU0sSUFBSSxJQUFJLENBQUNBLE1BQU0sQ0FBQ0MsVUFBVSxLQUFLQyxTQUFTLENBQUNDLElBQUksRUFBRTtRQUMxRCxJQUFJLENBQUNILE1BQU0sQ0FBQ0ksSUFBSSxDQUFDO1VBQ3pCQyxJQUFJLEVBQUNOO1FBQ04sQ0FBQyxDQUFDO01BQ0csQ0FBQyxNQUFNO1FBQ0gsZUFBYyxpQkFBaUI7TUFDbkM7SUFDSjs7SUFFQTtFQUFBO0lBQUE7SUFBQSxPQUNBLG1CQUFVO01BQUE7TUFDTixJQUFJLElBQUksQ0FBQ08saUJBQWlCLEtBQUssQ0FBQyxFQUFFO1FBQzlCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLFdBQVcsNkRBQXdCLElBQUksQ0FBQ1osR0FBRyxFQUFHO01BQzNEO01BQ0EsSUFBSSxJQUFJLENBQUNLLE1BQU0sSUFBSSxJQUFJLENBQUNBLE1BQU0sQ0FBQ0MsVUFBVSxLQUFLQyxTQUFTLENBQUNDLElBQUksRUFBRTtRQUMxRDtNQUNKO01BQ0EsSUFBSSxDQUFDSCxNQUFNLEdBQUdRLEdBQUcsQ0FBQ0MsYUFBYSxDQUFDO1FBQ3JDZCxHQUFHLEVBQUUsSUFBSSxDQUFDQSxHQUFHO1FBQ2JlLFFBQVEsRUFBRSxvQkFBSyxDQUFDO01BQ2pCLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ1YsTUFBTSxDQUFDVyxNQUFNLENBQUMsVUFBQ0MsS0FBSyxFQUFHO1FBQzNCLE1BQUksQ0FBQ0MsTUFBTSxHQUFHLEtBQUs7UUFDbkI7UUFDQSxNQUFJLENBQUNQLGlCQUFpQixHQUFHLENBQUM7UUFDMUI7UUFDQSxNQUFJLENBQUNRLGNBQWMsRUFBRTtRQUNyQixNQUFJLENBQUNQLEdBQUcsQ0FBQyxXQUFXLDJHQUFtQyxNQUFJLENBQUNaLEdBQUcsRUFBRztRQUNsRSxNQUFJLENBQUNvQixhQUFhLENBQUMsTUFBTSxFQUFFSCxLQUFLLENBQUM7TUFDbEMsQ0FBQyxDQUFDO01BQ0k7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDTixJQUFJLENBQUNaLE1BQU0sQ0FBQ2dCLFNBQVMsQ0FBQyxVQUFDSixLQUFLLEVBQUc7UUFDOUIsTUFBSSxDQUFDRyxhQUFhLENBQUMsU0FBUyxFQUFFSCxLQUFLLENBQUM7UUFDcEMsTUFBSSxDQUFDRSxjQUFjLEVBQUU7TUFDdEIsQ0FBQyxDQUFDO01BQ0Q7TUFDQTtNQUNRO01BQ0E7TUFDUjtNQUNELElBQUksQ0FBQ2QsTUFBTSxDQUFDaUIsT0FBTyxDQUFDLFVBQUNMLEtBQUssRUFBRztRQUM1QixJQUFJLE1BQUksQ0FBQ04saUJBQWlCLEtBQUssQ0FBQyxFQUFFO1VBQzlCLE1BQUksQ0FBQ0MsR0FBRyxDQUFDLFdBQVcsb0RBQXlCLE1BQUksQ0FBQ1osR0FBRyxFQUFHO1FBQzVEO1FBQ0EsSUFBSSxDQUFDLE1BQUksQ0FBQ2tCLE1BQU0sRUFBRTtVQUNkLE1BQUksQ0FBQ0ssZUFBZSxFQUFFO1FBQzFCO1FBQ0EsTUFBSSxDQUFDSCxhQUFhLENBQUMsT0FBTyxFQUFFSCxLQUFLLENBQUM7TUFDbkMsQ0FBQyxDQUFDO01BQ0k7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ04sSUFBSSxDQUFDWixNQUFNLENBQUNtQixPQUFPLENBQUMsVUFBQ1AsS0FBSyxFQUFHO1FBQzVCLElBQUksTUFBSSxDQUFDTixpQkFBaUIsS0FBSyxDQUFDLEVBQUU7VUFDOUIsTUFBSSxDQUFDQyxHQUFHLENBQUMsV0FBVyxvREFBeUIsTUFBSSxDQUFDWixHQUFHLEVBQUc7UUFDNUQ7UUFDQSxJQUFJLENBQUMsTUFBSSxDQUFDa0IsTUFBTSxFQUFFO1VBQ2QsTUFBSSxDQUFDSyxlQUFlLEVBQUU7UUFDMUI7UUFDQSxNQUFJLENBQUNFLGNBQWMsRUFBRTtRQUNyQixNQUFJLENBQUNMLGFBQWEsQ0FBQyxPQUFPLEVBQUVILEtBQUssQ0FBQztNQUNuQyxDQUFDLENBQUM7O01BRUY7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNNO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0o7O0lBRUE7RUFBQTtJQUFBO0lBQUEsT0FDQSwyQkFBa0I7TUFBQTtNQUNkLElBQUksSUFBSSxDQUFDTixpQkFBaUIsR0FBRyxJQUFJLENBQUNlLG9CQUFvQixFQUFFO1FBQ3BELElBQUksQ0FBQ2YsaUJBQWlCLEVBQUU7UUFDeEIsSUFBSSxDQUFDQyxHQUFHLENBQUMsV0FBVyx5Q0FBYyxJQUFJLENBQUNELGlCQUFpQixjQUFJLElBQUksQ0FBQ2Usb0JBQW9CLHFCQUFXLElBQUksQ0FBQzFCLEdBQUcsRUFBRztRQUMzRzJCLFVBQVUsQ0FBQyxZQUFNO1VBQ2IsTUFBSSxDQUFDQyxPQUFPLEVBQUU7UUFDbEIsQ0FBQyxFQUFFLElBQUksQ0FBQ0MsaUJBQWlCLENBQUM7TUFDOUIsQ0FBQyxNQUFNO1FBQ1pDLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLEVBQUU7UUFDYjtRQUNBO01BQ0o7SUFDSjs7SUFFQTtFQUFBO0lBQUE7SUFBQSxPQUNBLGlCQUFRO01BQ0osSUFBSSxJQUFJLENBQUMzQixNQUFNLEVBQUU7UUFDYixJQUFJLENBQUNhLE1BQU0sR0FBRyxJQUFJO1FBQ2xCLElBQUksQ0FBQ2IsTUFBTSxDQUFDNEIsS0FBSyxFQUFFO1FBQ25CLElBQUksQ0FBQzVCLE1BQU0sR0FBRyxJQUFJO1FBQ2xCLElBQUksQ0FBQzZCLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUNoQyxJQUFJLENBQUNBLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUNBLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztRQUNqQyxJQUFJLENBQUNBLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztNQUNyQztNQUNBLElBQUksQ0FBQ1QsY0FBYyxFQUFFO0lBQ3pCOztJQUVBO0VBQUE7SUFBQTtJQUFBLE9BQ0EsMEJBQWlCO01BQUE7TUFDYixJQUFJLElBQUksQ0FBQ1AsTUFBTSxFQUFFO01BQ2pCLElBQUksSUFBSSxDQUFDaUIsY0FBYyxFQUFFO1FBQ3JCLElBQUksQ0FBQ1YsY0FBYyxFQUFFO01BQ3pCO01BQ0EsSUFBSSxDQUFDVSxjQUFjLEdBQUdDLFdBQVcsQ0FBQyxZQUFNO1FBQ3BDLElBQUksTUFBSSxDQUFDL0IsTUFBTSxFQUFFO1VBQ2IsTUFBSSxDQUFDQSxNQUFNLENBQUNJLElBQUksQ0FBQztZQUNoQkMsSUFBSSxFQUFFMkIsSUFBSSxDQUFDQyxTQUFTLENBQUM7Y0FBRUMsSUFBSSxFQUFFLFdBQVc7Y0FBRTdCLElBQUksRUFBRSxDQUFDO1lBQUUsQ0FBQztVQUVyRCxDQUFDLENBQUM7VUFDRixNQUFJLENBQUNFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO1FBQ3JDLENBQUMsTUFBTTtVQUNILGVBQWMsaUJBQWlCO1FBQ25DO01BQ0osQ0FBQyxFQUFFLElBQUksQ0FBQzRCLGlCQUFpQixDQUFDO0lBQzlCOztJQUVBO0VBQUE7SUFBQTtJQUFBLE9BQ0EsMEJBQWlCO01BQ2JDLGFBQWEsQ0FBQyxJQUFJLENBQUNOLGNBQWMsQ0FBQztNQUNsQyxJQUFJLENBQUNBLGNBQWMsR0FBR2xDLFNBQVM7SUFDbkM7RUFBQztFQUFBO0FBQUEsRUEzTGdDeUMsMkJBQWU7QUFBQSwwQyIsImZpbGUiOiIxNDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudERpc3BhdGNoZXIgfSBmcm9tICcuL2Rpc3BhdGNoZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFdlYlNvY2tldENsaWVudCBleHRlbmRzIEV2ZW50RGlzcGF0Y2hlciB7XHJcbiAgICAvLyAjc29ja2V06ZO+5o6lXHJcbiAgICB1cmwgPSAnJztcclxuICAgIC8vICNzb2NrZXTlrp7kvotcclxuICAgIHNvY2tldCA9IG51bGw7XHJcbiAgICAvLyAj6YeN6L+e5qyh5pWwXHJcbiAgICByZWNvbm5lY3RBdHRlbXB0cyA9IDA7XHJcbiAgICAvLyAj5pyA5aSn6YeN6L+e5pWwXHJcbiAgICBtYXhSZWNvbm5lY3RBdHRlbXB0cyA9IDIwO1xyXG4gICAgLy8gI+mHjei/numXtOmalFxyXG4gICAgcmVjb25uZWN0SW50ZXJ2YWwgPSA2MDAwMDsgLy8gMTAgc2Vjb25kc1xyXG4gICAgLy8gI+WPkemAgeW/g+i3s+aVsOaNrumXtOmalFxyXG4gICAgaGVhcnRiZWF0SW50ZXJ2YWwgPSAxMDAwICogMzA7XHJcbiAgICAvLyAj6K6h5pe25ZmoaWRcclxuICAgIGhlYXJ0YmVhdFRpbWVyID0gdW5kZWZpbmVkO1xyXG4gICAgLy8gI+W9u+W6lee7iOatondzXHJcbiAgICBzdG9wV3MgPSBmYWxzZTtcclxuICAgIC8vICrmnoTpgKDlh73mlbBcclxuICAgIGNvbnN0cnVjdG9yKHVybCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy51cmwgPSB1cmw7XHJcbiAgICB9XHJcbiAgICAvLyA+55Sf5ZG95ZGo5pyf6ZKp5a2QXHJcbiAgICBvbm9wZW4oY2FsbEJhY2spIHtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ29wZW4nLCBjYWxsQmFjayk7XHJcbiAgICB9XHJcbiAgICBvbm1lc3NhZ2UoY2FsbEJhY2spIHtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBjYWxsQmFjayk7XHJcbiAgICB9XHJcbiAgICBvbmNsb3NlKGNhbGxCYWNrKSB7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbG9zZScsIGNhbGxCYWNrKTtcclxuICAgIH1cclxuICAgIG9uZXJyb3IoY2FsbEJhY2spIHtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgY2FsbEJhY2spO1xyXG4gICAgfVxyXG4gICAgLy8gPua2iOaBr+WPkemAgVxyXG4gICAgc2VuZChtZXNzYWdlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc29ja2V0ICYmIHRoaXMuc29ja2V0LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29ja2V0LnNlbmQoe1xyXG5cdFx0XHRcdGRhdGE6bWVzc2FnZSxcdFx0XHRcdFxyXG5cdFx0XHR9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbV2ViU29ja2V0XSDmnKrov57mjqUnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gIeWIneWni+WMlui/nuaOpVxyXG4gICAgY29ubmVjdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgYOWIneWni+WMlui/nuaOpeS4rS4uLiAgICAgICAgICAke3RoaXMudXJsfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zb2NrZXQgJiYgdGhpcy5zb2NrZXQucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNvY2tldCA9IHVuaS5jb25uZWN0U29ja2V0KHtcclxuXHRcdFx0dXJsOiB0aGlzLnVybCxcclxuXHRcdFx0Y29tcGxldGU6ICgpPT4ge31cclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5zb2NrZXQub25PcGVuKChldmVudCk9PntcdFx0XHRcclxuXHRcdFx0dGhpcy5zdG9wV3MgPSBmYWxzZTtcclxuXHRcdFx0Ly8g6YeN572u6YeN6L+e5bCd6K+V5oiQ5Yqf6L+e5o6lXHJcblx0XHRcdHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xyXG5cdFx0XHQvLyDlnKjov57mjqXmiJDlip/ml7blgZzmraLlvZPliY3nmoTlv4Pot7Pmo4DmtYvlubbph43mlrDlkK/liqhcclxuXHRcdFx0dGhpcy5zdGFydEhlYXJ0YmVhdCgpO1x0XHRcdFxyXG5cdFx0XHR0aGlzLmxvZygnV2ViU29ja2V0JywgYOi/nuaOpeaIkOWKnyznrYnlvoXmnI3liqHnq6/mlbDmja7mjqjpgIFbb25vcGVuXS4uLiAgICAgJHt0aGlzLnVybH1gKTtcclxuXHRcdFx0dGhpcy5kaXNwYXRjaEV2ZW50KCdvcGVuJywgZXZlbnQpO1xyXG5cdFx0fSlcclxuICAgICAgICAvLyAhd2Vic29ja2V06L+e5o6l5oiQ5YqfXHJcbiAgICAgICAgLy8gdGhpcy5zb2NrZXQub25PcGVuID0gZXZlbnQgPT4ge1x0XHRcdFxyXG4gICAgICAgIC8vICAgICB0aGlzLnN0b3BXcyA9IGZhbHNlO1xyXG4gICAgICAgIC8vICAgICAvLyDph43nva7ph43ov57lsJ3or5XmiJDlip/ov57mjqVcclxuICAgICAgICAvLyAgICAgdGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA9IDA7XHJcbiAgICAgICAgLy8gICAgIC8vIOWcqOi/nuaOpeaIkOWKn+aXtuWBnOatouW9k+WJjeeahOW/g+i3s+ajgOa1i+W5tumHjeaWsOWQr+WKqFxyXG4gICAgICAgIC8vICAgICB0aGlzLnN0YXJ0SGVhcnRiZWF0KCk7XHRcdFx0XHJcbiAgICAgICAgLy8gICAgIHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg6L+e5o6l5oiQ5YqfLOetieW+heacjeWKoeerr+aVsOaNruaOqOmAgVtvbm9wZW5dLi4uICAgICAke3RoaXMudXJsfWApO1xyXG4gICAgICAgIC8vICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ29wZW4nLCBldmVudCk7XHJcbiAgICAgICAgLy8gfTtcclxuXHRcdHRoaXMuc29ja2V0Lm9uTWVzc2FnZSgoZXZlbnQpPT57XHJcblx0XHRcdHRoaXMuZGlzcGF0Y2hFdmVudCgnbWVzc2FnZScsIGV2ZW50KTtcclxuXHRcdFx0dGhpcy5zdGFydEhlYXJ0YmVhdCgpO1xyXG5cdFx0fSlcclxuICAgLy8gICAgICB0aGlzLnNvY2tldC5vbk1lc3NhZ2UgPSBldmVudCA9PiB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV2ZW50KVxyXG4gICAgICAgICAgIC8vIHRoaXMuZGlzcGF0Y2hFdmVudCgnbWVzc2FnZScsIGV2ZW50KTtcclxuICAgICAgICAgICAvLyB0aGlzLnN0YXJ0SGVhcnRiZWF0KCk7XHJcbiAgIC8vICAgICAgfTtcclxuXHRcdHRoaXMuc29ja2V0Lm9uQ2xvc2UoKGV2ZW50KT0+e1xyXG5cdFx0XHRpZiAodGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA9PT0gMCkge1xyXG5cdFx0XHQgICAgdGhpcy5sb2coJ1dlYlNvY2tldCcsIGDov57mjqXmlq3lvIBbb25jbG9zZV0uLi4gICAgJHt0aGlzLnVybH1gKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoIXRoaXMuc3RvcFdzKSB7XHJcblx0XHRcdCAgICB0aGlzLmhhbmRsZVJlY29ubmVjdCgpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuZGlzcGF0Y2hFdmVudCgnY2xvc2UnLCBldmVudCk7XHJcblx0XHR9KVxyXG4gICAgICAgIC8vIHRoaXMuc29ja2V0Lm9uQ2xvc2UgPSBldmVudCA9PiB7XHJcbiAgICAgICAgLy8gICAgIGlmICh0aGlzLnJlY29ubmVjdEF0dGVtcHRzID09PSAwKSB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgYOi/nuaOpeaWreW8gFtvbmNsb3NlXS4uLiAgICAke3RoaXMudXJsfWApO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIGlmICghdGhpcy5zdG9wV3MpIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuaGFuZGxlUmVjb25uZWN0KCk7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdjbG9zZScsIGV2ZW50KTtcclxuICAgICAgICAvLyB9O1xyXG5cdFx0dGhpcy5zb2NrZXQub25FcnJvcigoZXZlbnQpPT57XHJcblx0XHRcdGlmICh0aGlzLnJlY29ubmVjdEF0dGVtcHRzID09PSAwKSB7XHJcblx0XHRcdCAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgYOi/nuaOpeW8guW4uFtvbmVycm9yXS4uLiAgICAke3RoaXMudXJsfWApO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICghdGhpcy5zdG9wV3MpIHtcclxuXHRcdFx0ICAgIHRoaXMuaGFuZGxlUmVjb25uZWN0KCk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5jbG9zZUhlYXJ0YmVhdCgpO1xyXG5cdFx0XHR0aGlzLmRpc3BhdGNoRXZlbnQoJ2Vycm9yJywgZXZlbnQpO1xyXG5cdFx0fSlcclxuXHRcdFxyXG5cdFx0Ly8gdW5pLm9uU29ja2V0RXJyb3IoKGV2ZW50KT0+e1xyXG5cdFx0Ly8gXHRjb25zb2xlLmxvZyhcIjMzM1wiKVxyXG5cdFx0Ly8gXHRpZiAodGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA9PT0gMCkge1xyXG5cdFx0Ly8gXHQgICAgdGhpcy5sb2coJ1dlYlNvY2tldCcsIGDov57mjqXlvILluLhbb25lcnJvcl0uLi4gICAgJHt0aGlzLnVybH1gKTtcclxuXHRcdC8vIFx0fVxyXG5cdFx0Ly8gXHRpZiAoIXRoaXMuc3RvcFdzKSB7XHJcblx0XHQvLyBcdCAgICB0aGlzLmhhbmRsZVJlY29ubmVjdCgpO1xyXG5cdFx0Ly8gXHR9XHJcblx0XHQvLyBcdHRoaXMuY2xvc2VIZWFydGJlYXQoKTtcclxuXHRcdC8vIFx0dGhpcy5kaXNwYXRjaEV2ZW50KCdlcnJvcicsIGV2ZW50KTtcclxuXHRcdC8vIH0pXHJcbiAgICAgICAgLy8gdGhpcy5zb2NrZXQub25FcnJvciA9IGV2ZW50ID0+IHtcclxuICAgICAgICAvLyAgICAgaWYgKHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPT09IDApIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg6L+e5o6l5byC5bi4W29uZXJyb3JdLi4uICAgICR7dGhpcy51cmx9YCk7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgdGhpcy5jbG9zZUhlYXJ0YmVhdCgpO1xyXG4gICAgICAgIC8vICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ2Vycm9yJywgZXZlbnQpO1xyXG4gICAgICAgIC8vIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gPiDmlq3nvZHph43ov57pgLvovpFcclxuICAgIGhhbmRsZVJlY29ubmVjdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA8IHRoaXMubWF4UmVjb25uZWN0QXR0ZW1wdHMpIHtcclxuICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RBdHRlbXB0cysrO1xyXG4gICAgICAgICAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgYOWwneivlemHjei/ni4uLiAoJHt0aGlzLnJlY29ubmVjdEF0dGVtcHRzfS8ke3RoaXMubWF4UmVjb25uZWN0QXR0ZW1wdHN9KSAgICAgICAke3RoaXMudXJsfWApO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdCgpO1xyXG4gICAgICAgICAgICB9LCB0aGlzLnJlY29ubmVjdEludGVydmFsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cdFx0XHRwbHVzLnJ1bnRpbWUucmVzdGFydCgpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNsb3NlSGVhcnRiZWF0KCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubG9nKCdXZWJTb2NrZXQnLCBg5pyA5aSn6YeN6L+e5aSx6LSl77yM57uI5q2i6YeN6L+eOiAke3RoaXMudXJsfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyA+5YWz6Zet6L+e5o6lXHJcbiAgICBjbG9zZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zb2NrZXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9wV3MgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNvY2tldC5jbG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnNvY2tldCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignb3BlbicpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbG9zZScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2xvc2VIZWFydGJlYXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyA+5byA5aeL5b+D6Lez5qOA5rWLIC0+IOWumuaXtuWPkemAgeW/g+i3s+a2iOaBr1xyXG4gICAgc3RhcnRIZWFydGJlYXQoKSB7XHRcdFxyXG4gICAgICAgIGlmICh0aGlzLnN0b3BXcykgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLmhlYXJ0YmVhdFRpbWVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VIZWFydGJlYXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oZWFydGJlYXRUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc29ja2V0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNvY2tldC5zZW5kKHtcclxuICAgICAgICAgICAgICAgIFx0ZGF0YTogSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnaGVhcnRCZWF0JywgZGF0YToge30gfSksXHJcbiAgICAgICAgICAgICAgICBcdFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZygnV2ViU29ja2V0JywgJ+mAgeW/g+i3s+aVsOaNri4uLicpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1dlYlNvY2tldF0g5pyq6L+e5o6lJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCB0aGlzLmhlYXJ0YmVhdEludGVydmFsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyA+5YWz6Zet5b+D6LezXHJcbiAgICBjbG9zZUhlYXJ0YmVhdCgpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaGVhcnRiZWF0VGltZXIpO1xyXG4gICAgICAgIHRoaXMuaGVhcnRiZWF0VGltZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///148\n"); |
| | | |
| | | /***/ }), |
| | | /* 149 */ |
| | | /*!******************************************************!*\ |
| | | !*** D:/monitor/Monitor-APP/static/js/dispatcher.js ***! |
| | | \******************************************************/ |
| | | /*! no static exports found */ |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EventDispatcher = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 81));\nvar _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 83));\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 85));\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 86));\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar Log = /*#__PURE__*/function () {\n function Log() {\n (0, _classCallCheck2.default)(this, Log);\n }\n (0, _createClass2.default)(Log, [{\n key: \"log\",\n value: function log(title, text) {\n // if (!Log.console) return;\n // if (import.meta.env.MODE === 'production') return;\n var color = '#ff4d4f';\n __f__(\"log\", \"%c \".concat(title, \" %c \").concat(text, \" %c\"), \"background:\".concat(color, \";border:1px solid \").concat(color, \"; padding: 1px; border-radius: 2px 0 0 2px; color: #fff;\"), \"border:1px solid \".concat(color, \"; padding: 1px; border-radius: 0 2px 2px 0; color: \").concat(color, \";\"), 'background:transparent', \" at static/js/dispatcher.js:7\");\n }\n }, {\n key: \"closeConsole\",\n value: function closeConsole() {\n Log.console = false;\n }\n }]);\n return Log;\n}();\n(0, _defineProperty2.default)(Log, \"console\", true);\nvar EventDispatcher = /*#__PURE__*/function (_Log) {\n (0, _inherits2.default)(EventDispatcher, _Log);\n var _super = _createSuper(EventDispatcher);\n function EventDispatcher() {\n var _this;\n (0, _classCallCheck2.default)(this, EventDispatcher);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"listeners\", {});\n return _this;\n }\n (0, _createClass2.default)(EventDispatcher, [{\n key: \"addEventListener\",\n value: function addEventListener(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n if (this.listeners[type].indexOf(listener) === -1) {\n this.listeners[type].push(listener);\n }\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type) {\n this.listeners[type] = [];\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(type, data) {\n var _this2 = this;\n var listenerArray = this.listeners[type] || [];\n if (listenerArray.length === 0) return;\n listenerArray.forEach(function (listener) {\n listener.call(_this2, data);\n });\n }\n }]);\n return EventDispatcher;\n}(Log);\nexports.EventDispatcher = EventDispatcher;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 15)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RhdGljL2pzL2Rpc3BhdGNoZXIuanMiXSwibmFtZXMiOlsiTG9nIiwidGl0bGUiLCJ0ZXh0IiwiY29sb3IiLCJjb25zb2xlIiwiRXZlbnREaXNwYXRjaGVyIiwidHlwZSIsImxpc3RlbmVyIiwibGlzdGVuZXJzIiwiaW5kZXhPZiIsInB1c2giLCJkYXRhIiwibGlzdGVuZXJBcnJheSIsImxlbmd0aCIsImZvckVhY2giLCJjYWxsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0lBQU1BLEdBQUc7RUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBO0lBQUEsT0FFTCxhQUFJQyxLQUFLLEVBQUVDLElBQUksRUFBRTtNQUNiO01BQ0E7TUFDQSxJQUFNQyxLQUFLLEdBQUcsU0FBUztNQUN2QiwwQkFDVUYsS0FBSyxpQkFBT0MsSUFBSSwrQkFDUkMsS0FBSywrQkFBcUJBLEtBQUssMEZBQ3pCQSxLQUFLLGdFQUFzREEsS0FBSyxRQUNwRix3QkFBd0I7SUFFaEM7RUFBQztJQUFBO0lBQUEsT0FDRCx3QkFBZTtNQUNYSCxHQUFHLENBQUNJLE9BQU8sR0FBRyxLQUFLO0lBQ3ZCO0VBQUM7RUFBQTtBQUFBO0FBQUEsOEJBZkNKLEdBQUcsYUFDWSxJQUFJO0FBQUEsSUFnQlpLLGVBQWU7RUFBQTtFQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQTtJQUFBO0lBQUE7SUFBQSx3RkFDWixDQUFDLENBQUM7SUFBQTtFQUFBO0VBQUE7SUFBQTtJQUFBLE9BRWQsMEJBQWlCQyxJQUFJLEVBQUVDLFFBQVEsRUFBRTtNQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDQyxTQUFTLENBQUNGLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLElBQUksQ0FBQ0UsU0FBUyxDQUFDRixJQUFJLENBQUMsR0FBRyxFQUFFO01BQzdCO01BQ0EsSUFBSSxJQUFJLENBQUNFLFNBQVMsQ0FBQ0YsSUFBSSxDQUFDLENBQUNHLE9BQU8sQ0FBQ0YsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDL0MsSUFBSSxDQUFDQyxTQUFTLENBQUNGLElBQUksQ0FBQyxDQUFDSSxJQUFJLENBQUNILFFBQVEsQ0FBQztNQUN2QztJQUNKO0VBQUM7SUFBQTtJQUFBLE9BRUQsNkJBQW9CRCxJQUFJLEVBQUU7TUFDdEIsSUFBSSxDQUFDRSxTQUFTLENBQUNGLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDN0I7RUFBQztJQUFBO0lBQUEsT0FFRCx1QkFBY0EsSUFBSSxFQUFFSyxJQUFJLEVBQUU7TUFBQTtNQUN0QixJQUFNQyxhQUFhLEdBQUcsSUFBSSxDQUFDSixTQUFTLENBQUNGLElBQUksQ0FBQyxJQUFJLEVBQUU7TUFDaEQsSUFBSU0sYUFBYSxDQUFDQyxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ2hDRCxhQUFhLENBQUNFLE9BQU8sQ0FBQyxVQUFBUCxRQUFRLEVBQUk7UUFDOUJBLFFBQVEsQ0FBQ1EsSUFBSSxDQUFDLE1BQUksRUFBRUosSUFBSSxDQUFDO01BQzdCLENBQUMsQ0FBQztJQUNOO0VBQUM7RUFBQTtBQUFBLEVBdEJnQ1gsR0FBRztBQUFBLDBDIiwiZmlsZSI6IjE0OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIExvZyB7XHJcbiAgICBzdGF0aWMgY29uc29sZSA9IHRydWU7XHJcbiAgICBsb2codGl0bGUsIHRleHQpIHtcclxuICAgICAgICAvLyBpZiAoIUxvZy5jb25zb2xlKSByZXR1cm47XHJcbiAgICAgICAgLy8gaWYgKGltcG9ydC5tZXRhLmVudi5NT0RFID09PSAncHJvZHVjdGlvbicpIHJldHVybjtcclxuICAgICAgICBjb25zdCBjb2xvciA9ICcjZmY0ZDRmJztcclxuICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgYCVjICR7dGl0bGV9ICVjICR7dGV4dH0gJWNgLFxyXG4gICAgICAgICAgICBgYmFja2dyb3VuZDoke2NvbG9yfTtib3JkZXI6MXB4IHNvbGlkICR7Y29sb3J9OyBwYWRkaW5nOiAxcHg7IGJvcmRlci1yYWRpdXM6IDJweCAwIDAgMnB4OyBjb2xvcjogI2ZmZjtgLFxyXG4gICAgICAgICAgICBgYm9yZGVyOjFweCBzb2xpZCAke2NvbG9yfTsgcGFkZGluZzogMXB4OyBib3JkZXItcmFkaXVzOiAwIDJweCAycHggMDsgY29sb3I6ICR7Y29sb3J9O2AsXHJcbiAgICAgICAgICAgICdiYWNrZ3JvdW5kOnRyYW5zcGFyZW50J1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjbG9zZUNvbnNvbGUoKSB7XHJcbiAgICAgICAgTG9nLmNvbnNvbGUgPSBmYWxzZTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgY2xhc3MgRXZlbnREaXNwYXRjaGVyIGV4dGVuZHMgTG9nIHtcclxuICAgIGxpc3RlbmVycyA9IHt9O1xyXG5cclxuICAgIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcclxuICAgICAgICBpZiAoIXRoaXMubGlzdGVuZXJzW3R5cGVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzW3R5cGVdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSkge1xyXG4gICAgICAgIHRoaXMubGlzdGVuZXJzW3R5cGVdID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGF0Y2hFdmVudCh0eXBlLCBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgbGlzdGVuZXJBcnJheSA9IHRoaXMubGlzdGVuZXJzW3R5cGVdIHx8IFtdO1xyXG4gICAgICAgIGlmIChsaXN0ZW5lckFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICAgIGxpc3RlbmVyQXJyYXkuZm9yRWFjaChsaXN0ZW5lciA9PiB7XHJcbiAgICAgICAgICAgIGxpc3RlbmVyLmNhbGwodGhpcywgZGF0YSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///149\n"); |
| | | |
| | | /***/ }) |
| | | ],[[0,"app-config"]]]); |