快乐的昕的电脑
昨天 c8e4ab6026d3c131734727acd633d1347dfdf860
unpackage/dist/dev/app-plus/app-service.js
@@ -9714,38 +9714,53 @@
              disabled: _vm._$s(
                2,
                "a-disabled",
                _vm.loadingForm || _vm.submitting
                _vm.loadingForm || _vm.submitting || _vm.loadingInspection
              ),
              _i: 2,
            },
            on: { click: _vm.handleRefresh },
          }),
          _c(
            "button",
            {
              staticClass: _vm._$s(3, "sc", "expand-btn"),
              attrs: { _i: 3 },
              on: { click: _vm.toggleExpand },
            },
            [
              _vm._v(
                _vm._$s(3, "t0-0", _vm._s(_vm.isExpanded ? "收起" : "展开"))
              ),
            ]
          ),
        ]
      ),
      _c(
        "view",
        {
          staticClass: _vm._$s(4, "sc", "table-section"),
          class: _vm._$s(4, "c", { expanded: _vm.isExpanded }),
          attrs: { _i: 4 },
        },
        { staticClass: _vm._$s(3, "sc", "table-section"), attrs: { _i: 3 } },
        [
          _c(
            "view",
            { staticClass: _vm._$s(4, "sc", "table-header"), attrs: { _i: 4 } },
            [
              _c("h3"),
              _c(
                "button",
                {
                  staticClass: _vm._$s(6, "sc", "expand-btn"),
                  attrs: { _i: 6 },
                  on: {
                    click: function ($event) {
                      return _vm.toggleExpand("tool")
                    },
                  },
                },
                [
                  _vm._v(
                    _vm._$s(
                      6,
                      "t0-0",
                      _vm._s(_vm.toolExpanded ? "收起" : "展开")
                    )
                  ),
                ]
              ),
            ]
          ),
          _c(
            "table",
            { staticClass: _vm._$s(5, "sc", "styled-table"), attrs: { _i: 5 } },
            {
              staticClass: _vm._$s(7, "sc", "styled-table"),
              class: _vm._$s(7, "c", { expanded: _vm.toolExpanded }),
              attrs: { _i: 7 },
            },
            [
              _c("thead", [
                _c("tr", [
@@ -9753,18 +9768,10 @@
                  _c("th"),
                  _c("th"),
                  _c("th", {
                    staticClass: _vm._$s(11, "sc", "num"),
                    attrs: { _i: 11 },
                  }),
                  _c("th"),
                  _c("th", {
                    staticClass: _vm._$s(13, "sc", "num"),
                    attrs: { _i: 13 },
                  }),
                  _c("th", {
                    staticClass: _vm._$s(14, "sc", "num"),
                    attrs: { _i: 14 },
                  }),
                  _c("th"),
                  _c("th", {
                    staticClass: _vm._$s(15, "sc", "num"),
                    attrs: { _i: 15 },
@@ -9777,6 +9784,14 @@
                    staticClass: _vm._$s(17, "sc", "num"),
                    attrs: { _i: 17 },
                  }),
                  _c("th", {
                    staticClass: _vm._$s(18, "sc", "num"),
                    attrs: { _i: 18 },
                  }),
                  _c("th", {
                    staticClass: _vm._$s(19, "sc", "num"),
                    attrs: { _i: 19 },
                  }),
                  _c("th"),
                  _c("th"),
                ]),
@@ -9785,53 +9800,53 @@
                "tbody",
                [
                  _vm._l(
                    _vm._$s(21, "f", { forItems: _vm.visibleRecords }),
                    _vm._$s(23, "f", { forItems: _vm.visibleToolRecords }),
                    function (item, idx, $20, $30) {
                      return _c(
                        "tr",
                        {
                          key: _vm._$s(21, "f", {
                          key: _vm._$s(23, "f", {
                            forIndex: $20,
                            key: item.id,
                          }),
                          class: _vm._$s("21-" + $30, "c", {
                          class: _vm._$s("23-" + $30, "c", {
                            "row-odd": idx % 2 === 0,
                          }),
                          attrs: { _i: "21-" + $30 },
                          attrs: { _i: "23-" + $30 },
                        },
                        [
                          _c("td", [
                            _vm._v(
                              _vm._$s("22-" + $30, "t0-0", _vm._s(item.no))
                              _vm._$s("24-" + $30, "t0-0", _vm._s(item.no))
                            ),
                          ]),
                          _c(
                            "td",
                            {
                              staticClass: _vm._$s("23-" + $30, "sc", "left"),
                              attrs: { _i: "23-" + $30 },
                              staticClass: _vm._$s("25-" + $30, "sc", "left"),
                              attrs: { _i: "25-" + $30 },
                            },
                            [
                              _vm._v(
                                _vm._$s("23-" + $30, "t0-0", _vm._s(item.name))
                                _vm._$s("25-" + $30, "t0-0", _vm._s(item.name))
                              ),
                            ]
                          ),
                          _c("td", [
                            _vm._v(
                              _vm._$s("24-" + $30, "t0-0", _vm._s(item.upTime))
                              _vm._$s("26-" + $30, "t0-0", _vm._s(item.upTime))
                            ),
                          ]),
                          _c(
                            "td",
                            {
                              staticClass: _vm._$s("25-" + $30, "sc", "num"),
                              attrs: { _i: "25-" + $30 },
                              staticClass: _vm._$s("27-" + $30, "sc", "num"),
                              attrs: { _i: "27-" + $30 },
                            },
                            [
                              _vm._v(
                                _vm._$s(
                                  "25-" + $30,
                                  "27-" + $30,
                                  "t0-0",
                                  _vm._s(
                                    item.upCount != null ? item.upCount : ""
@@ -9843,7 +9858,7 @@
                          _c("td", [
                            _vm._v(
                              _vm._$s(
                                "26-" + $30,
                                "28-" + $30,
                                "t0-0",
                                _vm._s(item.downTime)
                              )
@@ -9852,17 +9867,17 @@
                          _c(
                            "td",
                            {
                              staticClass: _vm._$s("27-" + $30, "sc", "num"),
                              attrs: { _i: "27-" + $30 },
                              staticClass: _vm._$s("29-" + $30, "sc", "num"),
                              attrs: { _i: "29-" + $30 },
                            },
                            [
                              _vm._$s("28-" + $30, "i", idx === 0)
                              _vm._$s("30-" + $30, "i", idx === 0)
                                ? [
                                    _vm._$s("29-" + $30, "i", !item.downTime)
                                    _vm._$s("31-" + $30, "i", !item.downTime)
                                      ? [
                                          _vm._v(
                                            _vm._$s(
                                              "29-" + $30,
                                              "31-" + $30,
                                              "t0-0",
                                              _vm._s(
                                                item.currentCjNum != null
@@ -9875,7 +9890,7 @@
                                      : [
                                          _vm._v(
                                            _vm._$s(
                                              "30-" + $30,
                                              "32-" + $30,
                                              "t0-0",
                                              _vm._s(
                                                item.downCount != null
@@ -9889,7 +9904,7 @@
                                : [
                                    _vm._v(
                                      _vm._$s(
                                        "31-" + $30,
                                        "33-" + $30,
                                        "t0-0",
                                        _vm._s(
                                          item.downCount != null
@@ -9905,17 +9920,17 @@
                          _c(
                            "td",
                            {
                              staticClass: _vm._$s("32-" + $30, "sc", "num"),
                              attrs: { _i: "32-" + $30 },
                              staticClass: _vm._$s("34-" + $30, "sc", "num"),
                              attrs: { _i: "34-" + $30 },
                            },
                            [
                              _vm._$s("33-" + $30, "i", idx === 0)
                              _vm._$s("35-" + $30, "i", idx === 0)
                                ? [
                                    _vm._$s("34-" + $30, "i", !item.downTime)
                                    _vm._$s("36-" + $30, "i", !item.downTime)
                                      ? [
                                          _vm._v(
                                            _vm._$s(
                                              "34-" + $30,
                                              "36-" + $30,
                                              "t0-0",
                                              _vm._s(
                                                item.currentCjNum != null &&
@@ -9932,7 +9947,7 @@
                                      : [
                                          _vm._v(
                                            _vm._$s(
                                              "35-" + $30,
                                              "37-" + $30,
                                              "t0-0",
                                              _vm._s(
                                                item.useCount != null
@@ -9946,7 +9961,7 @@
                                : [
                                    _vm._v(
                                      _vm._$s(
                                        "36-" + $30,
                                        "38-" + $30,
                                        "t0-0",
                                        _vm._s(
                                          item.useCount != null
@@ -9962,13 +9977,13 @@
                          _c(
                            "td",
                            {
                              staticClass: _vm._$s("37-" + $30, "sc", "num"),
                              attrs: { _i: "37-" + $30 },
                              staticClass: _vm._$s("39-" + $30, "sc", "num"),
                              attrs: { _i: "39-" + $30 },
                            },
                            [
                              _vm._v(
                                _vm._$s(
                                  "37-" + $30,
                                  "39-" + $30,
                                  "t0-0",
                                  _vm._s(
                                    item.useLimit != null ? item.useLimit : ""
@@ -9980,17 +9995,17 @@
                          _c(
                            "td",
                            {
                              staticClass: _vm._$s("38-" + $30, "sc", "num"),
                              attrs: { _i: "38-" + $30 },
                              staticClass: _vm._$s("40-" + $30, "sc", "num"),
                              attrs: { _i: "40-" + $30 },
                            },
                            [
                              _vm._$s("39-" + $30, "i", idx === 0)
                              _vm._$s("41-" + $30, "i", idx === 0)
                                ? [
                                    _vm._$s("40-" + $30, "i", !item.downTime)
                                    _vm._$s("42-" + $30, "i", !item.downTime)
                                      ? [
                                          _vm._v(
                                            _vm._$s(
                                              "40-" + $30,
                                              "42-" + $30,
                                              "t0-0",
                                              _vm._s(
                                                item.currentCjNum != null &&
@@ -10015,7 +10030,7 @@
                                      : [
                                          _vm._v(
                                            _vm._$s(
                                              "41-" + $30,
                                              "43-" + $30,
                                              "t0-0",
                                              _vm._s(
                                                item.lifePercent != null
@@ -10029,7 +10044,7 @@
                                : [
                                    _vm._v(
                                      _vm._$s(
                                        "42-" + $30,
                                        "44-" + $30,
                                        "t0-0",
                                        _vm._s(item.lifePercent)
                                      )
@@ -10041,13 +10056,13 @@
                          _c(
                            "td",
                            {
                              staticClass: _vm._$s("43-" + $30, "sc", "num"),
                              attrs: { _i: "43-" + $30 },
                              staticClass: _vm._$s("45-" + $30, "sc", "num"),
                              attrs: { _i: "45-" + $30 },
                            },
                            [
                              _vm._v(
                                _vm._$s(
                                  "43-" + $30,
                                  "45-" + $30,
                                  "t0-0",
                                  _vm._s(item.lifeWarn)
                                )
@@ -10058,7 +10073,7 @@
                            "td",
                            {
                              class: _vm._$s(
                                "44-" + $30,
                                "46-" + $30,
                                "c",
                                item.warnStatus === "预警"
                                  ? "warn-cell"
@@ -10066,26 +10081,26 @@
                                  ? "ok-cell"
                                  : ""
                              ),
                              attrs: { _i: "44-" + $30 },
                              attrs: { _i: "46-" + $30 },
                            },
                            [
                              _vm._$s(
                                "45-" + $30,
                                "47-" + $30,
                                "i",
                                item.warnStatus === "预警"
                              )
                                ? _c("span", {
                                    staticClass: _vm._$s(
                                      "45-" + $30,
                                      "47-" + $30,
                                      "sc",
                                      "warn-badge"
                                    ),
                                    attrs: { _i: "45-" + $30 },
                                    attrs: { _i: "47-" + $30 },
                                  })
                                : _c("span", { attrs: { _i: "46-" + $30 } }, [
                                : _c("span", { attrs: { _i: "48-" + $30 } }, [
                                    _vm._v(
                                      _vm._$s(
                                        "46-" + $30,
                                        "48-" + $30,
                                        "t0-0",
                                        _vm._s(item.warnStatus)
                                      )
@@ -10096,7 +10111,7 @@
                          _c("td", [
                            _vm._v(
                              _vm._$s(
                                "47-" + $30,
                                "49-" + $30,
                                "t0-0",
                                _vm._s(item.downTime ? "下机" : "在机")
                              )
@@ -10106,24 +10121,219 @@
                      )
                    }
                  ),
                  _vm._$s(48, "i", !_vm.toolRecords.length)
                    ? _c("tr", { attrs: { _i: 48 } }, [_c("td", {})])
                  _vm._$s(50, "i", !_vm.toolRecords.length)
                    ? _c("tr", { attrs: { _i: 50 } }, [_c("td", {})])
                    : _vm._e(),
                  _vm._$s(50, "i", _vm.hasMoreRecords && !_vm.isExpanded)
                    ? _c("tr", { attrs: { _i: 50 } }, [
                  _vm._$s(52, "i", _vm.hasMoreToolRecords && !_vm.toolExpanded)
                    ? _c("tr", { attrs: { _i: 52 } }, [
                        _c(
                          "td",
                          {
                            staticClass: _vm._$s(51, "sc", "more-records-tip"),
                            attrs: { _i: 51 },
                            staticClass: _vm._$s(53, "sc", "more-records-tip"),
                            attrs: { _i: 53 },
                          },
                          [
                            _c("span", [
                              _vm._v(
                                _vm._$s(
                                  52,
                                  54,
                                  "t0-0",
                                  _vm._s(_vm.remainingRecords)
                                  _vm._s(_vm.remainingToolRecords)
                                )
                              ),
                            ]),
                          ]
                        ),
                      ])
                    : _vm._e(),
                ],
                2
              ),
            ]
          ),
        ]
      ),
      _c(
        "view",
        { staticClass: _vm._$s(55, "sc", "table-section"), attrs: { _i: 55 } },
        [
          _c(
            "view",
            {
              staticClass: _vm._$s(56, "sc", "table-header"),
              attrs: { _i: 56 },
            },
            [
              _c("h3"),
              _c(
                "button",
                {
                  staticClass: _vm._$s(58, "sc", "expand-btn"),
                  attrs: { _i: 58 },
                  on: {
                    click: function ($event) {
                      return _vm.toggleExpand("inspection")
                    },
                  },
                },
                [
                  _vm._v(
                    _vm._$s(
                      58,
                      "t0-0",
                      _vm._s(_vm.inspectionExpanded ? "收起" : "展开")
                    )
                  ),
                ]
              ),
            ]
          ),
          _c(
            "table",
            {
              staticClass: _vm._$s(59, "sc", "styled-table"),
              class: _vm._$s(59, "c", { expanded: _vm.inspectionExpanded }),
              attrs: { _i: 59 },
            },
            [
              _c("thead", [
                _c("tr", [
                  _c("th"),
                  _c("th"),
                  _c("th"),
                  _c("th"),
                  _c("th"),
                  _c("th"),
                  _c("th"),
                  _c("th"),
                ]),
              ]),
              _c(
                "tbody",
                [
                  _vm._l(
                    _vm._$s(71, "f", {
                      forItems: _vm.visibleInspectionRecords,
                    }),
                    function (item, idx, $21, $31) {
                      return _c(
                        "tr",
                        {
                          key: _vm._$s(71, "f", {
                            forIndex: $21,
                            key: item.id || idx,
                          }),
                          class: _vm._$s("71-" + $31, "c", {
                            "row-odd": idx % 2 === 0,
                          }),
                          attrs: { _i: "71-" + $31 },
                        },
                        [
                          _c("td", [
                            _vm._v(
                              _vm._$s(
                                "72-" + $31,
                                "t0-0",
                                _vm._s(item.releaseNo || "")
                              )
                            ),
                          ]),
                          _c("td", [
                            _vm._v(
                              _vm._$s(
                                "73-" + $31,
                                "t0-0",
                                _vm._s(item.fcheckBy || "")
                              )
                            ),
                          ]),
                          _c("td", [
                            _vm._v(
                              _vm._$s(
                                "74-" + $31,
                                "t0-0",
                                _vm._s(_vm.formatDate(item.fcheckDate))
                              )
                            ),
                          ]),
                          _c("td", [
                            _vm._v(
                              _vm._$s(
                                "75-" + $31,
                                "t0-0",
                                _vm._s(item.lineNo || "")
                              )
                            ),
                          ]),
                          _c("td", [
                            _vm._v(
                              _vm._$s(
                                "76-" + $31,
                                "t0-0",
                                _vm._s(item.fsubmit == 1 ? "已提交" : "未提交")
                              )
                            ),
                          ]),
                          _c("td", [
                            _vm._v(
                              _vm._$s(
                                "77-" + $31,
                                "t0-0",
                                _vm._s(item.fcancel == "Y" ? "作废" : "未作废")
                              )
                            ),
                          ]),
                          _c("td", [
                            _vm._v(
                              _vm._$s(
                                "78-" + $31,
                                "t0-0",
                                _vm._s(item.fsecondResu || "")
                              )
                            ),
                          ]),
                          _c(
                            "td",
                            {
                              staticClass: _vm._$s("79-" + $31, "sc", "left"),
                              attrs: { _i: "79-" + $31 },
                            },
                            [
                              _vm._v(
                                _vm._$s(
                                  "79-" + $31,
                                  "t0-0",
                                  _vm._s(item.remeke || "")
                                )
                              ),
                            ]
                          ),
                        ]
                      )
                    }
                  ),
                  _vm._$s(80, "i", !_vm.inspectionRecords.length)
                    ? _c("tr", { attrs: { _i: 80 } }, [_c("td", {})])
                    : _vm._e(),
                  _vm._$s(
                    82,
                    "i",
                    _vm.hasMoreInspectionRecords && !_vm.inspectionExpanded
                  )
                    ? _c("tr", { attrs: { _i: 82 } }, [
                        _c(
                          "td",
                          {
                            staticClass: _vm._$s(83, "sc", "more-records-tip"),
                            attrs: { _i: 83 },
                          },
                          [
                            _c("span", [
                              _vm._v(
                                _vm._$s(
                                  84,
                                  "t0-0",
                                  _vm._s(_vm.remainingInspectionRecords)
                                )
                              ),
                            ]),
@@ -10167,7 +10377,7 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 3));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 9));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 _default = {\n  data: function data() {\n    return {\n      machineNo: '',\n      //机台编码\n      workOrderNo: '',\n      //工单号\n      selectedToolNo: '',\n      toolName: '',\n      useLimitInput: '',\n      lifeWarnInput: '',\n      // 寿命比预警值原始输入\n      toolRecords: [],\n      loadingForm: false,\n      submitting: false,\n      workOrderCurrentCjNum: null,\n      // 工单当前数采\n      isExpanded: false,\n      // 是否展开表格\n      defaultVisibleRows: 3 // 默认显示的行数(一半高度)\n    };\n  },\n\n  computed: {\n    // 计算默认显示多少行(总行数的一半)\n    defaultRows: function defaultRows() {\n      var total = this.toolRecords.length;\n      if (total <= 3) return total; // 如果总行数小于等于3,全部显示\n      return Math.max(3, Math.floor(total / 2)); // 最少显示3行,最多显示一半\n    },\n    // 当前可见的记录\n    visibleRecords: function visibleRecords() {\n      if (this.isExpanded) {\n        return this.toolRecords;\n      } else {\n        return this.toolRecords.slice(0, this.defaultRows);\n      }\n    },\n    // 是否还有更多记录\n    hasMoreRecords: function hasMoreRecords() {\n      return this.toolRecords.length > this.defaultRows;\n    },\n    // 剩余记录数\n    remainingRecords: function remainingRecords() {\n      return this.toolRecords.length - this.defaultRows;\n    }\n  },\n  methods: {\n    // 切换展开/收起\n    toggleExpand: function toggleExpand() {\n      this.isExpanded = !this.isExpanded;\n    },\n    // 刷新按钮处理方法\n    handleRefresh: function handleRefresh() {\n      var _this = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n        return _regenerator.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!(_this.machineNo && _this.workOrderNo)) {\n                  _context.next = 6;\n                  break;\n                }\n                _context.next = 3;\n                return _this.fetchFormData();\n              case 3:\n                _context.next = 5;\n                return _this.fetchDefaultToolFromWorkOrder();\n              case 5:\n                // 刷新后赋值第一行 currentCjNum\n                if (_this.toolRecords.length > 0) {\n                  _this.$set(_this.toolRecords[0], 'currentCjNum', _this.workOrderCurrentCjNum);\n                }\n              case 6:\n                _this.$showMessage('刷新完成');\n              case 7:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }))();\n    },\n    // 自动带出工单刀具信息,并获取工单最新采集数\n    fetchDefaultToolFromWorkOrder: function fetchDefaultToolFromWorkOrder() {\n      var _this2 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n        var _res$data, res, _ref, _order$CurrentCjNum, order, warn;\n        return _regenerator.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                if (_this2.machineNo) {\n                  _context2.next = 2;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 2:\n                _context2.prev = 2;\n                _context2.next = 5;\n                return _this2.$post({\n                  url: '/Womdaa/GetWomdaasByShow',\n                  data: JSON.stringify({\n                    machineNo: _this2.machineNo\n                  }),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 5:\n                res = _context2.sent;\n                if (res.status === 0 && Array.isArray((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.tbBillList) && res.data.tbBillList.length > 0) {\n                  order = res.data.tbBillList[0];\n                  _this2.selectedToolNo = order.cutterId || order.cutteR_ID || '';\n                  _this2.toolName = order.cutterName || order.cutteR_NAME || '';\n                  // 获取工单最新采集数\n                  _this2.workOrderCurrentCjNum = (_ref = (_order$CurrentCjNum = order.CurrentCjNum) !== null && _order$CurrentCjNum !== void 0 ? _order$CurrentCjNum : order.currentCjNum) !== null && _ref !== void 0 ? _ref : null;\n                  // 自动填充寿命比预警值\n                  if (order.modlLifeWorning !== undefined && order.modlLifeWorning !== null) {\n                    warn = Number(order.modlLifeWorning);\n                    _this2.lifeWarnInput = warn <= 1 ? (warn * 100).toFixed(0) : warn.toFixed(0);\n                  } else {\n                    _this2.lifeWarnInput = '';\n                  }\n                } else {\n                  _this2.workOrderCurrentCjNum = null;\n                }\n                _context2.next = 13;\n                break;\n              case 9:\n                _context2.prev = 9;\n                _context2.t0 = _context2[\"catch\"](2);\n                __f__(\"warn\", '自动带出工单刀具失败', _context2.t0, \" at pages/moldRecord.vue:194\");\n                _this2.workOrderCurrentCjNum = null;\n              case 13:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, null, [[2, 9]]);\n      }))();\n    },\n    fetchFormData: function fetchFormData() {\n      var _this3 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n        var payload, res, list, getField, mapped;\n        return _regenerator.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                if (!(!_this3.workOrderNo || !_this3.machineNo)) {\n                  _context3.next = 3;\n                  break;\n                }\n                __f__(\"warn\", '工单号或机台号为空,跳过获取表单数据', \" at pages/moldRecord.vue:201\");\n                return _context3.abrupt(\"return\");\n              case 3:\n                _this3.loadingForm = true;\n                payload = {\n                  workOrderNo: _this3.workOrderNo.trim(),\n                  machineNo: _this3.machineNo.trim()\n                };\n                _context3.prev = 5;\n                _context3.next = 8;\n                return _this3.$post({\n                  url: '/MesCutterLedger/GetFormData',\n                  data: JSON.stringify(payload),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 8:\n                res = _context3.sent;\n                if (!(res.status !== 0)) {\n                  _context3.next = 13;\n                  break;\n                }\n                _this3.$showMessage(res.message || '获取表单数据失败');\n                _this3.toolRecords = [];\n                return _context3.abrupt(\"return\");\n              case 13:\n                list = Array.isArray(res.data) ? res.data : res.data && res.data.tbBillList ? res.data.tbBillList : res.data && res.data.data ? res.data.data : [];\n                getField = function getField(obj) {\n                  for (var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n                    keys[_key - 1] = arguments[_key];\n                  }\n                  for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n                    var k = _keys[_i];\n                    if ((obj === null || obj === void 0 ? void 0 : obj[k]) !== undefined && (obj === null || obj === void 0 ? void 0 : obj[k]) !== null) return obj[k];\n                  }\n                  return null;\n                };\n                mapped = (list || []).map(function (t) {\n                  var _getField, _getField2;\n                  var upTimeRaw = getField(t, 'uP_TIME', 'UP_TIME', 'uPTime', 'UPTIME', 'UpTime');\n                  var downTimeRaw = getField(t, 'dowN_TIME', 'DOWN_TIME', 'downTime', 'DOWNTIME');\n                  var lifeWarnRaw = getField(t, 'lifE_WARN', 'LIFE_WARN', 'lifeWarn', 'LIFEWARN');\n                  var currentCjNum = getField(t, 'currentCjNum', 'CURRENTCJNUM', 'CurrentCjNum');\n                  var useCount = getField(t, 'usE_COUNT', 'USE_COUNT', 'useCount');\n                  var useLimit = getField(t, 'usE_LIMIT', 'USE_LIMIT', 'useLimit');\n                  var percent = '';\n                  if (useCount != null && useLimit != null && !isNaN(useCount) && !isNaN(useLimit) && Number(useLimit) > 0) {\n                    percent = (Number(useCount) / Number(useLimit) * 100).toFixed(0) + '%';\n                  }\n                  var parseNumber = function parseNumber(v) {\n                    if (v === null || v === undefined || v === '') return null;\n                    var s = String(v).replace(/[,%%]/g, '').trim();\n                    var n = parseFloat(s);\n                    return Number.isFinite(n) ? n : null;\n                  };\n                  var formatPercent = function formatPercent(n) {\n                    if (n === null || n === undefined || isNaN(n)) return '';\n                    if (n <= 1) return \"\".concat((n * 100).toFixed(0), \"%\");\n                    return \"\".concat(Number(n).toFixed(0), \"%\");\n                  };\n                  var lifeWarnNum = parseNumber(lifeWarnRaw);\n                  var warnStatus = getField(t, 'status', 'STATUS') || '';\n                  if (lifeWarnNum !== null && useCount != null && useLimit != null && !isNaN(useCount) && !isNaN(useLimit) && Number(useLimit) > 0) {\n                    var percentNum = Number(useCount) / Number(useLimit);\n                    warnStatus = percentNum >= lifeWarnNum ? '预警' : '正常';\n                  } else {\n                    warnStatus = warnStatus || '未知';\n                  }\n                  return {\n                    id: getField(t, 'id', 'ID') || \"\".concat(getField(t, 'cutteR_ID') || getField(t, 'CUTTER_ID') || '', \"-\").concat(upTimeRaw || ''),\n                    no: getField(t, 'cutteR_ID', 'CUTTER_ID', 'cutterId', 'no') || '',\n                    name: getField(t, 'cutteR_NAME', 'CUTTER_NAME', 'cutterName', 'name') || '',\n                    upTime: _this3.formatDateTime(upTimeRaw),\n                    upCount: (_getField = getField(t, 'uP_COUNT', 'UP_COUNT', 'upCount')) !== null && _getField !== void 0 ? _getField : '',\n                    downTime: _this3.formatDateTime(downTimeRaw),\n                    downCount: (_getField2 = getField(t, 'dowN_COUNT', 'DOWN_COUNT', 'downCount')) !== null && _getField2 !== void 0 ? _getField2 : '',\n                    useCount: useCount !== null && useCount !== void 0 ? useCount : '',\n                    useLimit: useLimit !== null && useLimit !== void 0 ? useLimit : '',\n                    lifePercent: percent,\n                    lifeWarn: formatPercent(lifeWarnNum),\n                    warnStatus: warnStatus,\n                    currentCjNum: currentCjNum\n                  };\n                }); // 按上刀时间降序排序(越晚的越上面)\n                mapped.sort(function (a, b) {\n                  var parse = function parse(s) {\n                    if (!s) return 0;\n                    var year = new Date().getFullYear();\n                    return new Date(\"\".concat(year, \"-\").concat(s.replace(/-/g, '-'), \":00\")).getTime();\n                  };\n                  return parse(b.upTime) - parse(a.upTime);\n                });\n                _this3.toolRecords = mapped;\n                _context3.next = 25;\n                break;\n              case 20:\n                _context3.prev = 20;\n                _context3.t0 = _context3[\"catch\"](5);\n                __f__(\"error\", '获取表单数据错误:', _context3.t0, \" at pages/moldRecord.vue:294\");\n                _this3.$showMessage('获取数据失败,请检查网络连接');\n                _this3.toolRecords = [];\n              case 25:\n                _context3.prev = 25;\n                _this3.loadingForm = false;\n                return _context3.finish(25);\n              case 28:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, null, [[5, 20, 25, 28]]);\n      }))();\n    },\n    formatDateTime: function formatDateTime(dateTimeStr) {\n      if (!dateTimeStr) return '';\n      try {\n        var s = String(dateTimeStr).trim();\n        if (/^\\d{10}$/.test(s)) {\n          var _d = new Date(Number(s) * 1000);\n          return \"\".concat(_d.getMonth() + 1, \"-\").concat(_d.getDate(), \" \").concat(_d.getHours(), \":\").concat(String(_d.getMinutes()).padStart(2, '0'));\n        }\n        if (/^\\d{13}$/.test(s)) {\n          var _d2 = new Date(Number(s));\n          return \"\".concat(_d2.getMonth() + 1, \"-\").concat(_d2.getDate(), \" \").concat(_d2.getHours(), \":\").concat(String(_d2.getMinutes()).padStart(2, '0'));\n        }\n        var date = new Date(dateTimeStr);\n        if (!isNaN(date.getTime())) {\n          return \"\".concat(date.getMonth() + 1, \"-\").concat(d.getDate(), \" \").concat(date.getHours(), \":\").concat(String(date.getMinutes()).padStart(2, '0'));\n        }\n        var match = String(dateTimeStr).match(/(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,2}).*?(\\d{1,2}:\\d{2})/);\n        if (match) return \"\".concat(match[1].replace(/-/g, '/').replace(/^\\d{4}\\//, function (m) {\n          return m;\n        }), \" \").concat(match[2]);\n        return String(dateTimeStr);\n      } catch (_unused) {\n        return String(dateTimeStr);\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this4 = this;\n    this.machineNo = uni.getStorageSync('machineNo') || '';\n    this.workOrderNo = uni.getStorageSync('daa001') || '';\n    if (this.machineNo && this.workOrderNo) {\n      this.fetchFormData().then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n        return _regenerator.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.next = 2;\n                return _this4.fetchDefaultToolFromWorkOrder();\n              case 2:\n                // 进入页面时赋值第一行 currentCjNum\n                if (_this4.toolRecords.length > 0) {\n                  _this4.$set(_this4.toolRecords[0], 'currentCjNum', _this4.workOrderCurrentCjNum);\n                }\n              case 3:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4);\n      })));\n    } else {\n      __f__(\"warn\", '机台号或工单号为空,无法获取表单数据', \" at pages/moldRecord.vue:339\");\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 */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9sZFJlY29yZC52dWUiXSwibmFtZXMiOlsiZGF0YSIsIm1hY2hpbmVObyIsIndvcmtPcmRlck5vIiwic2VsZWN0ZWRUb29sTm8iLCJ0b29sTmFtZSIsInVzZUxpbWl0SW5wdXQiLCJsaWZlV2FybklucHV0IiwidG9vbFJlY29yZHMiLCJsb2FkaW5nRm9ybSIsInN1Ym1pdHRpbmciLCJ3b3JrT3JkZXJDdXJyZW50Q2pOdW0iLCJpc0V4cGFuZGVkIiwiZGVmYXVsdFZpc2libGVSb3dzIiwiY29tcHV0ZWQiLCJkZWZhdWx0Um93cyIsInZpc2libGVSZWNvcmRzIiwiaGFzTW9yZVJlY29yZHMiLCJyZW1haW5pbmdSZWNvcmRzIiwibWV0aG9kcyIsInRvZ2dsZUV4cGFuZCIsImhhbmRsZVJlZnJlc2giLCJmZXRjaERlZmF1bHRUb29sRnJvbVdvcmtPcmRlciIsInVybCIsImhlYWRlcnMiLCJyZXMiLCJvcmRlciIsIndhcm4iLCJmZXRjaEZvcm1EYXRhIiwicGF5bG9hZCIsImxpc3QiLCJnZXRGaWVsZCIsImtleXMiLCJtYXBwZWQiLCJwZXJjZW50Iiwid2FyblN0YXR1cyIsImlkIiwibm8iLCJuYW1lIiwidXBUaW1lIiwidXBDb3VudCIsImRvd25UaW1lIiwiZG93bkNvdW50IiwidXNlQ291bnQiLCJ1c2VMaW1pdCIsImxpZmVQZXJjZW50IiwibGlmZVdhcm4iLCJjdXJyZW50Q2pOdW0iLCJmb3JtYXREYXRlVGltZSIsIm1vdW50ZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUEyR0E7RUFDQUE7SUFDQTtNQUNBQztNQUFBO01BQ0FDO01BQUE7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztN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QUEsQ0FDQTtJQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiIxMTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgICA8dmlldyBjbGFzcz1cInBhZ2VcIj5cclxuXHJcbiAgICAgICAgPCEtLSDmk43kvZzmjInpkq4gLS0+XHJcbiAgICAgICAgPHZpZXcgY2xhc3M9XCJidXR0b24tcm93XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYXZlLWJ0blwiIEBjbGljaz1cImhhbmRsZVJlZnJlc2hcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nRm9ybSB8fCBzdWJtaXR0aW5nXCI+5Yi35pawPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJleHBhbmQtYnRuXCIgQGNsaWNrPVwidG9nZ2xlRXhwYW5kXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpc0V4cGFuZGVkID8gJ+aUtui1tycgOiAn5bGV5byAJyB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3ZpZXc+XHJcblxyXG4gICAgICAgIDwhLS0g5YiA5YW35L2/55So6K6w5b2V6KGo5qC8IC0tPlxyXG4gICAgICAgIDx2aWV3IGNsYXNzPVwidGFibGUtc2VjdGlvblwiIDpjbGFzcz1cInsnZXhwYW5kZWQnOiBpc0V4cGFuZGVkfVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJzdHlsZWQtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjclXCI+5YiA5YW357yW5Y+3PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6MTIlXCI+5YiA5YW35ZCN56ewPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6MTAlXCI+5LiK5YiA5pe26Ze0PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibnVtXCIgc3R5bGU9XCJ3aWR0aDo3JVwiPuS4iuWIgOiuoeaVsDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjEwJVwiPuS4i+WIgOaXtumXtDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7kuIvliIDorqHmlbA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJudW1cIiBzdHlsZT1cIndpZHRoOjclXCI+5L2/55So5qyh5pWwPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibnVtXCIgc3R5bGU9XCJ3aWR0aDo3JVwiPuS9v+eUqOS4iumZkDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7lr7/lkb3mr5QlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibnVtXCIgc3R5bGU9XCJ3aWR0aDo3JVwiPuWvv+WRveavlOmihOitpuWAvDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjclXCI+6aKE6K2m54q25oCBPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6NyVcIj7liIDlhbflnKjmnLrnirbmgIE8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cIihpdGVtLCBpZHgpIGluIHZpc2libGVSZWNvcmRzXCIgOmtleT1cIml0ZW0uaWRcIiA6Y2xhc3M9XCJ7J3Jvdy1vZGQnOiBpZHggJSAyID09PSAwfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5ubyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxlZnRcIj57eyBpdGVtLm5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS51cFRpbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJudW1cIj57eyBpdGVtLnVwQ291bnQgIT0gbnVsbCA/IGl0ZW0udXBDb3VudCA6ICcnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uZG93blRpbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIOWPquacieesrOS4gOihjOaYvuekuiBjdXJyZW50Q2pOdW3vvIzlhbblroPooYzmmL7npLogZG93bkNvdW50IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJudW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaWR4ID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDnrKzkuIDooYzvvJrkuIvmnLrml7bkuI3lrp7ml7bmmL7npLogY3VycmVudENqTnVt77yM5pi+56S6IGRvd25Db3VudCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiFpdGVtLmRvd25UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uY3VycmVudENqTnVtICE9IG51bGwgPyBpdGVtLmN1cnJlbnRDak51bSA6ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRvd25Db3VudCAhPSBudWxsID8gaXRlbS5kb3duQ291bnQgOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRvd25Db3VudCAhPSBudWxsID8gaXRlbS5kb3duQ291bnQgOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLeS9v+eUqOasoeaVsC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJudW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaWR4ID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDnrKzkuIDooYzlrp7ml7borqHnrpfkvb/nlKjmrKHmlbDvvIzoi6XkuLrkuIvmnLrliJnkuI3lrp7ml7bmmL7npLogLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCIhaXRlbS5kb3duVGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uY3VycmVudENqTnVtICE9IG51bGwgJiYgaXRlbS51cENvdW50ICE9IG51bGwgPyAoTnVtYmVyKGl0ZW0uY3VycmVudENqTnVtKSAtIE51bWJlcihpdGVtLnVwQ291bnQpKSA6IChpdGVtLnVzZUNvdW50ICE9IG51bGwgPyBpdGVtLnVzZUNvdW50IDogJycpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnVzZUNvdW50ICE9IG51bGwgPyBpdGVtLnVzZUNvdW50IDogJycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS51c2VDb3VudCAhPSBudWxsID8gaXRlbS51c2VDb3VudCA6ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJudW1cIj57eyBpdGVtLnVzZUxpbWl0ICE9IG51bGwgPyBpdGVtLnVzZUxpbWl0IDogJycgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0t5a+/5ZG95q+UJS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJudW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaWR4ID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSDnrKzkuIDooYzlrp7ml7borqHnrpflr7/lkb3mr5Ql77yM6Iul5Li65LiL5py65YiZ5LiN5a6e5pe25pi+56S6IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiIWl0ZW0uZG93blRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmN1cnJlbnRDak51bSAhPSBudWxsICYmIGl0ZW0udXBDb3VudCAhPSBudWxsICYmIGl0ZW0udXNlTGltaXQgIT0gbnVsbCAmJiBOdW1iZXIoaXRlbS51c2VMaW1pdCkgPiAwID8gTWF0aC5yb3VuZCgoTnVtYmVyKGl0ZW0uY3VycmVudENqTnVtKSAtIE51bWJlcihpdGVtLnVwQ291bnQpKSAvIE51bWJlcihpdGVtLnVzZUxpbWl0KSAqIDEwMCkgKyAnJScgOiAoaXRlbS5saWZlUGVyY2VudCAhPSBudWxsID8gaXRlbS5saWZlUGVyY2VudCA6ICcnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5saWZlUGVyY2VudCAhPSBudWxsID8gaXRlbS5saWZlUGVyY2VudCA6ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGlmZVBlcmNlbnQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm51bVwiPnt7IGl0ZW0ubGlmZVdhcm4gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgOmNsYXNzPVwiaXRlbS53YXJuU3RhdHVzID09PSAn6aKE6K2mJyA/ICd3YXJuLWNlbGwnIDogKGl0ZW0ud2FyblN0YXR1cyA9PT0gJ+ato+W4uCcgPyAnb2stY2VsbCcgOiAnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJpdGVtLndhcm5TdGF0dXMgPT09ICfpooToraYnXCIgY2xhc3M9XCJ3YXJuLWJhZGdlXCI+6K2m5ZGKPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPnt7IGl0ZW0ud2FyblN0YXR1cyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kb3duVGltZSA/ICfkuIvmnLonIDogJ+WcqOacuicgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciB2LWlmPVwiIXRvb2xSZWNvcmRzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEyXCI+5pqC5peg5pWw5o2uPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciB2LWlmPVwiaGFzTW9yZVJlY29yZHMgJiYgIWlzRXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMlwiIGNsYXNzPVwibW9yZS1yZWNvcmRzLXRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+6L+Y5pyJIHt7IHJlbWFpbmluZ1JlY29yZHMgfX0g5p2h6K6w5b2V77yM54K55Ye7XCLlsZXlvIBcIuaMiemSruafpeeci+WFqOmDqDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L3ZpZXc+XHJcbiAgICA8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG4gICAgZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgICAgIGRhdGEoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBtYWNoaW5lTm86ICcnLC8v5py65Y+w57yW56CBXHJcbiAgICAgICAgICAgICAgICB3b3JrT3JkZXJObzogJycsLy/lt6XljZXlj7dcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVG9vbE5vOiAnJyxcclxuICAgICAgICAgICAgICAgIHRvb2xOYW1lOiAnJyxcclxuICAgICAgICAgICAgICAgIHVzZUxpbWl0SW5wdXQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgbGlmZVdhcm5JbnB1dDogJycsIC8vIOWvv+WRveavlOmihOitpuWAvOWOn+Wni+i+k+WFpVxyXG4gICAgICAgICAgICAgICAgdG9vbFJlY29yZHM6IFtdLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZ0Zvcm06IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc3VibWl0dGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB3b3JrT3JkZXJDdXJyZW50Q2pOdW06IG51bGwsIC8vIOW3peWNleW9k+WJjeaVsOmHh1xyXG4gICAgICAgICAgICAgICAgaXNFeHBhbmRlZDogZmFsc2UsIC8vIOaYr+WQpuWxleW8gOihqOagvFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZpc2libGVSb3dzOiAzLCAvLyDpu5jorqTmmL7npLrnmoTooYzmlbDvvIjkuIDljYrpq5jluqbvvIlcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgICAgIC8vIOiuoeeul+m7mOiupOaYvuekuuWkmuWwkeihjO+8iOaAu+ihjOaVsOeahOS4gOWNiu+8iVxyXG4gICAgICAgICAgICBkZWZhdWx0Um93cygpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gdGhpcy50b29sUmVjb3Jkcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBpZiAodG90YWwgPD0gMykgcmV0dXJuIHRvdGFsOyAvLyDlpoLmnpzmgLvooYzmlbDlsI/kuo7nrYnkuo4z77yM5YWo6YOo5pi+56S6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMywgTWF0aC5mbG9vcih0b3RhbCAvIDIpKTsgLy8g5pyA5bCR5pi+56S6M+ihjO+8jOacgOWkmuaYvuekuuS4gOWNilxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDlvZPliY3lj6/op4HnmoTorrDlvZVcclxuICAgICAgICAgICAgdmlzaWJsZVJlY29yZHMoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0V4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9vbFJlY29yZHM7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvb2xSZWNvcmRzLnNsaWNlKDAsIHRoaXMuZGVmYXVsdFJvd3MpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDmmK/lkKbov5jmnInmm7TlpJrorrDlvZVcclxuICAgICAgICAgICAgaGFzTW9yZVJlY29yZHMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b29sUmVjb3Jkcy5sZW5ndGggPiB0aGlzLmRlZmF1bHRSb3dzO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDliankvZnorrDlvZXmlbBcclxuICAgICAgICAgICAgcmVtYWluaW5nUmVjb3JkcygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvb2xSZWNvcmRzLmxlbmd0aCAtIHRoaXMuZGVmYXVsdFJvd3M7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1ldGhvZHM6IHtcclxuICAgICAgICAgICAgLy8g5YiH5o2i5bGV5byAL+aUtui1t1xyXG4gICAgICAgICAgICB0b2dnbGVFeHBhbmQoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0V4cGFuZGVkO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgLy8g5Yi35paw5oyJ6ZKu5aSE55CG5pa55rOVXHJcbiAgICAgICAgICAgIGFzeW5jIGhhbmRsZVJlZnJlc2goKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYWNoaW5lTm8gJiYgdGhpcy53b3JrT3JkZXJObykge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hEZWZhdWx0VG9vbEZyb21Xb3JrT3JkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDliLfmlrDlkI7otYvlgLznrKzkuIDooYwgY3VycmVudENqTnVtXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9vbFJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZXQodGhpcy50b29sUmVjb3Jkc1swXSwgJ2N1cnJlbnRDak51bScsIHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZSgn5Yi35paw5a6M5oiQJyk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvLyDoh6rliqjluKblh7rlt6XljZXliIDlhbfkv6Hmga/vvIzlubbojrflj5blt6XljZXmnIDmlrDph4fpm4bmlbBcclxuICAgICAgICAgICAgYXN5bmMgZmV0Y2hEZWZhdWx0VG9vbEZyb21Xb3JrT3JkZXIoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWFjaGluZU5vKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvV29tZGFhL0dldFdvbWRhYXNCeVNob3cnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7IG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8gfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDAgJiYgQXJyYXkuaXNBcnJheShyZXMuZGF0YT8udGJCaWxsTGlzdCkgJiYgcmVzLmRhdGEudGJCaWxsTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyID0gcmVzLmRhdGEudGJCaWxsTGlzdFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvb2xObyA9IG9yZGVyLmN1dHRlcklkIHx8IG9yZGVyLmN1dHRlUl9JRCB8fCAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sTmFtZSA9IG9yZGVyLmN1dHRlck5hbWUgfHwgb3JkZXIuY3V0dGVSX05BTUUgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiOt+WPluW3peWNleacgOaWsOmHh+mbhuaVsFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtPcmRlckN1cnJlbnRDak51bSA9IG9yZGVyLkN1cnJlbnRDak51bSA/PyBvcmRlci5jdXJyZW50Q2pOdW0gPz8gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6Ieq5Yqo5aGr5YWF5a+/5ZG95q+U6aKE6K2m5YC8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmRlci5tb2RsTGlmZVdvcm5pbmcgIT09IHVuZGVmaW5lZCAmJiBvcmRlci5tb2RsTGlmZVdvcm5pbmcgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhcm4gPSBOdW1iZXIob3JkZXIubW9kbExpZmVXb3JuaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlmZVdhcm5JbnB1dCA9IHdhcm4gPD0gMSA/ICh3YXJuICogMTAwKS50b0ZpeGVkKDApIDogd2Fybi50b0ZpeGVkKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saWZlV2FybklucHV0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtPcmRlckN1cnJlbnRDak51bSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybign6Ieq5Yqo5bim5Ye65bel5Y2V5YiA5YW35aSx6LSlJywgZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgYXN5bmMgZmV0Y2hGb3JtRGF0YSgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy53b3JrT3JkZXJObyB8fCAhdGhpcy5tYWNoaW5lTm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+W3peWNleWPt+aIluacuuWPsOWPt+S4uuepuu+8jOi3s+i/h+iOt+WPluihqOWNleaVsOaNricpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0Zvcm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgICAgICAgICB3b3JrT3JkZXJObzogdGhpcy53b3JrT3JkZXJOby50cmltKCksXHJcbiAgICAgICAgICAgICAgICAgICAgbWFjaGluZU5vOiB0aGlzLm1hY2hpbmVOby50cmltKClcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvTWVzQ3V0dGVyTGVkZ2VyL0dldEZvcm1EYXRhJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgIT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UocmVzLm1lc3NhZ2UgfHwgJ+iOt+WPluihqOWNleaVsOaNruWksei0pScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xSZWNvcmRzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEpID8gcmVzLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAocmVzLmRhdGEgJiYgcmVzLmRhdGEudGJCaWxsTGlzdCkgPyByZXMuZGF0YS50YkJpbGxMaXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChyZXMuZGF0YSAmJiByZXMuZGF0YS5kYXRhKSA/IHJlcy5kYXRhLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZXRGaWVsZCA9IChvYmosIC4uLmtleXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIGlmIChvYmo/LltrXSAhPT0gdW5kZWZpbmVkICYmIG9iaj8uW2tdICE9PSBudWxsKSByZXR1cm4gb2JqW2tdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWQgPSAobGlzdCB8fCBbXSkubWFwKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cFRpbWVSYXcgPSBnZXRGaWVsZCh0LCAndVBfVElNRScsICdVUF9USU1FJywgJ3VQVGltZScsICdVUFRJTUUnLCAnVXBUaW1lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvd25UaW1lUmF3ID0gZ2V0RmllbGQodCwgJ2Rvd05fVElNRScsICdET1dOX1RJTUUnLCAnZG93blRpbWUnLCAnRE9XTlRJTUUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlmZVdhcm5SYXcgPSBnZXRGaWVsZCh0LCAnbGlmRV9XQVJOJywgJ0xJRkVfV0FSTicsICdsaWZlV2FybicsICdMSUZFV0FSTicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q2pOdW0gPSBnZXRGaWVsZCh0LCAnY3VycmVudENqTnVtJywgJ0NVUlJFTlRDSk5VTScsICdDdXJyZW50Q2pOdW0nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZUNvdW50ID0gZ2V0RmllbGQodCwgJ3VzRV9DT1VOVCcsICdVU0VfQ09VTlQnLCAndXNlQ291bnQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlTGltaXQgPSBnZXRGaWVsZCh0LCAndXNFX0xJTUlUJywgJ1VTRV9MSU1JVCcsICd1c2VMaW1pdCcpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBlcmNlbnQgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZUNvdW50ICE9IG51bGwgJiYgdXNlTGltaXQgIT0gbnVsbCAmJiAhaXNOYU4odXNlQ291bnQpICYmICFpc05hTih1c2VMaW1pdCkgJiYgTnVtYmVyKHVzZUxpbWl0KSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSAoKE51bWJlcih1c2VDb3VudCkgLyBOdW1iZXIodXNlTGltaXQpKSAqIDEwMCkudG9GaXhlZCgwKSArICclJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VOdW1iZXIgPSB2ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSAnJykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gU3RyaW5nKHYpLnJlcGxhY2UoL1ss77yFJV0vZywgJycpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUZsb2F0KHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShuKSA/IG4gOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXRQZXJjZW50ID0gbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9PT0gbnVsbCB8fCBuID09PSB1bmRlZmluZWQgfHwgaXNOYU4obikpIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuIDw9IDEpIHJldHVybiBgJHsobiAqIDEwMCkudG9GaXhlZCgwKX0lYDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtOdW1iZXIobikudG9GaXhlZCgwKX0lYDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlmZVdhcm5OdW0gPSBwYXJzZU51bWJlcihsaWZlV2FyblJhdyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FyblN0YXR1cyA9IGdldEZpZWxkKHQsICdzdGF0dXMnLCAnU1RBVFVTJykgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaWZlV2Fybk51bSAhPT0gbnVsbCAmJiB1c2VDb3VudCAhPSBudWxsICYmIHVzZUxpbWl0ICE9IG51bGwgJiYgIWlzTmFOKHVzZUNvdW50KSAmJiAhaXNOYU4odXNlTGltaXQpICYmIE51bWJlcih1c2VMaW1pdCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwZXJjZW50TnVtID0gTnVtYmVyKHVzZUNvdW50KSAvIE51bWJlcih1c2VMaW1pdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuU3RhdHVzID0gKHBlcmNlbnROdW0gPj0gbGlmZVdhcm5OdW0pID8gJ+mihOitpicgOiAn5q2j5bi4JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5TdGF0dXMgPSB3YXJuU3RhdHVzIHx8ICfmnKrnn6UnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGdldEZpZWxkKHQsICdpZCcsICdJRCcpIHx8IGAke2dldEZpZWxkKHQsICdjdXR0ZVJfSUQnKSB8fCBnZXRGaWVsZCh0LCAnQ1VUVEVSX0lEJykgfHwgJyd9LSR7dXBUaW1lUmF3IHx8ICcnfWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBubzogZ2V0RmllbGQodCwgJ2N1dHRlUl9JRCcsICdDVVRURVJfSUQnLCAnY3V0dGVySWQnLCAnbm8nKSB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGdldEZpZWxkKHQsICdjdXR0ZVJfTkFNRScsICdDVVRURVJfTkFNRScsICdjdXR0ZXJOYW1lJywgJ25hbWUnKSB8fCAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwVGltZTogdGhpcy5mb3JtYXREYXRlVGltZSh1cFRpbWVSYXcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBDb3VudDogZ2V0RmllbGQodCwgJ3VQX0NPVU5UJywgJ1VQX0NPVU5UJywgJ3VwQ291bnQnKSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25UaW1lOiB0aGlzLmZvcm1hdERhdGVUaW1lKGRvd25UaW1lUmF3KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25Db3VudDogZ2V0RmllbGQodCwgJ2Rvd05fQ09VTlQnLCAnRE9XTl9DT1VOVCcsICdkb3duQ291bnQnKSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUNvdW50OiB1c2VDb3VudCA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUxpbWl0OiB1c2VMaW1pdCA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVQZXJjZW50OiBwZXJjZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlmZVdhcm46IGZvcm1hdFBlcmNlbnQobGlmZVdhcm5OdW0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyblN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDak51bVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDmjInkuIrliIDml7bpl7TpmY3luo/mjpLluo/vvIjotormmZrnmoTotorkuIrpnaLvvIlcclxuICAgICAgICAgICAgICAgICAgICBtYXBwZWQuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZSA9IHMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKSByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYCR7eWVhcn0tJHtzLnJlcGxhY2UoLy0vZywgJy0nKX06MDBgKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZShiLnVwVGltZSkgLSBwYXJzZShhLnVwVGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbFJlY29yZHMgPSBtYXBwZWQ7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPluihqOWNleaVsOaNrumUmeivrzonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+iOt+WPluaVsOaNruWksei0pe+8jOivt+ajgOafpee9kee7nOi/nuaOpScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbFJlY29yZHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgZm9ybWF0RGF0ZVRpbWUoZGF0ZVRpbWVTdHIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghZGF0ZVRpbWVTdHIpIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IFN0cmluZyhkYXRlVGltZVN0cikudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgvXlxcZHsxMH0kLy50ZXN0KHMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShOdW1iZXIocykgKiAxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2QuZ2V0TW9udGgoKSArIDF9LSR7ZC5nZXREYXRlKCl9ICR7ZC5nZXRIb3VycygpfToke1N0cmluZyhkLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoL15cXGR7MTN9JC8udGVzdChzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gbmV3IERhdGUoTnVtYmVyKHMpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2QuZ2V0TW9udGgoKSArIDF9LSR7ZC5nZXREYXRlKCl9ICR7ZC5nZXRIb3VycygpfToke1N0cmluZyhkLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVRpbWVTdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtkYXRlLmdldE1vbnRoKCkgKyAxfS0ke2QuZ2V0RGF0ZSgpfSAke2RhdGUuZ2V0SG91cnMoKX06JHtTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBTdHJpbmcoZGF0ZVRpbWVTdHIpLm1hdGNoKC8oXFxkezEsNH1bLVxcL11cXGR7MSwyfVstXFwvXVxcZHsxLDJ9KS4qPyhcXGR7MSwyfTpcXGR7Mn0pLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSByZXR1cm4gYCR7bWF0Y2hbMV0ucmVwbGFjZSgvLS9nLCAnLycpLnJlcGxhY2UoL15cXGR7NH1cXC8vLCAobSkgPT4gbSl9ICR7bWF0Y2hbMl19YDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGRhdGVUaW1lU3RyKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoZGF0ZVRpbWVTdHIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtb3VudGVkKCkge1xyXG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVObyA9IHVuaS5nZXRTdG9yYWdlU3luYygnbWFjaGluZU5vJykgfHwgJyc7XHJcbiAgICAgICAgICAgIHRoaXMud29ya09yZGVyTm8gPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2RhYTAwMScpIHx8ICcnO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubWFjaGluZU5vICYmIHRoaXMud29ya09yZGVyTm8pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hGb3JtRGF0YSgpLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hEZWZhdWx0VG9vbEZyb21Xb3JrT3JkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDov5vlhaXpobXpnaLml7botYvlgLznrKzkuIDooYwgY3VycmVudENqTnVtXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9vbFJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZXQodGhpcy50b29sUmVjb3Jkc1swXSwgJ2N1cnJlbnRDak51bScsIHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybign5py65Y+w5Y+35oiW5bel5Y2V5Y+35Li656m677yM5peg5rOV6I635Y+W6KGo5Y2V5pWw5o2uJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbiAgICAucGFnZSB7XHJcbiAgICAgICAgcGFkZGluZzogMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAuYnV0dG9uLXJvdyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBnYXA6IDMycHg7XHJcbiAgICAgICAgbWFyZ2luOiAydmggMDtcclxuICAgIH1cclxuXHJcbiAgICAuc2F2ZS1idG4sIC5jYW5jZWwtYnRuLCAuZXhwYW5kLWJ0biB7XHJcbiAgICAgICAgd2lkdGg6IDIwJTtcclxuICAgICAgICBwYWRkaW5nOiAxLjV2aDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBBMkU5O1xyXG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgfVxyXG5cclxuICAgIC5leHBhbmQtYnRuIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTJjNDFhO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuZXhwYW5kLWJ0bjpob3ZlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM3M2QxM2Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZXhwYW5kLWJ0bjphY3RpdmUge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzg5ZTBkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAuY2FuY2VsLWJ0biB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcclxuICAgICAgICBjb2xvcjogIzMzMztcclxuICAgIH1cclxuXHJcbiAgICAuc2F2ZS1idG46aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MGE5ZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLnNhdmUtYnRuOmFjdGl2ZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA5NmRkOTtcclxuICAgIH1cclxuXHJcbiAgICAuc2F2ZS1idG46ZGlzYWJsZWQsIC5jYW5jZWwtYnRuOmRpc2FibGVkLCAuZXhwYW5kLWJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgICAgb3BhY2l0eTogMC42O1xyXG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnRhYmxlLXNlY3Rpb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgbWFyZ2luOiAxdmggMDtcclxuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IDMwMHB4OyAvKiDpu5jorqTpq5jluqbvvIzlpKfnuqbmmL7npLozLTTooYwgKi9cclxuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XHJcbiAgICAgICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjNzIGVhc2U7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2YwZjBmMDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC50YWJsZS1zZWN0aW9uLmV4cGFuZGVkIHtcclxuICAgICAgICAgICAgbWF4LWhlaWdodDogODAwcHg7IC8qIOWxleW8gOaXtueahOmrmOW6pu+8jOWPr+S7peaYvuekuuabtOWkmuihjCAqL1xyXG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB0YWJsZS5zdHlsZWQtdGFibGUge1xyXG4gICAgICAgIG1heC13aWR0aDogMTgwMHB4O1xyXG4gICAgICAgIHdpZHRoOiA5OHZ3O1xyXG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XHJcbiAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDA7XHJcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2JmYmZiZjtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwwLDAsMC4wNik7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIHRhYmxlLnN0eWxlZC10YWJsZSB0aGVhZCB0aCB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmYWZhZmE7XHJcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjYmZiZmJmO1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxNnB4IDEwcHg7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRhYmxlLnN0eWxlZC10YWJsZSB0Ym9keSB0ZCB7XHJcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxNHB4IDEwcHg7XHJcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAudGFibGUtc2VjdGlvbiB0YWJsZSB0aDpmaXJzdC1jaGlsZCwgLnRhYmxlLXNlY3Rpb24gdGFibGUgdGQ6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2JmYmZiZjtcclxuICAgIH1cclxuXHJcbiAgICAudGFibGUtc2VjdGlvbiB0YWJsZSB0aDpsYXN0LWNoaWxkLCAudGFibGUtc2VjdGlvbiB0YWJsZSB0ZDpsYXN0LWNoaWxkIHtcclxuICAgICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjYmZiZmJmO1xyXG4gICAgfVxyXG5cclxuICAgIC5yb3ctb2RkIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAucm93LW9kZCArIHRyIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZhZmFmYTtcclxuICAgICAgICB9XHJcblxyXG4gICAgLm51bSB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcclxuICAgIH1cclxuXHJcbiAgICAubGVmdCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcclxuICAgIH1cclxuXHJcbiAgICAud2Fybi1jZWxsIHtcclxuICAgICAgICBjb2xvcjogI2Q5MzAyNTtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuXHJcbiAgICAub2stY2VsbCB7XHJcbiAgICAgICAgY29sb3I6ICMzMzM7XHJcbiAgICB9XHJcblxyXG4gICAgLndhcm4tYmFkZ2Uge1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmY0ZDRmO1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIHBhZGRpbmc6IDJweCA2cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG5cclxuICAgIC5tb3JlLXJlY29yZHMtdGlwIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5O1xyXG4gICAgfVxyXG5cclxuICAgICAgICAubW9yZS1yZWNvcmRzLXRpcCBzcGFuIHtcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICBwYWRkaW5nOiA1cHggMTVweDtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcclxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICAgICAgICBib3JkZXI6IDFweCBkYXNoZWQgI2NjYztcclxuICAgICAgICB9XHJcblxyXG4gICAgLyog5ZON5bqU5byP6LCD5pW0ICovXHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XHJcbiAgICAgICAgLnNhdmUtYnRuLCAuY2FuY2VsLWJ0biwgLmV4cGFuZC1idG4ge1xyXG4gICAgICAgICAgICB3aWR0aDogMzAlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuPC9zdHlsZT4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///119\n");
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 3));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 9));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 _default = {\n  data: function data() {\n    return {\n      machineNo: '',\n      workOrderNo: '',\n      selectedToolNo: '',\n      toolName: '',\n      useLimitInput: '',\n      lifeWarnInput: '',\n      toolRecords: [],\n      inspectionRecords: [],\n      // 首检记录\n      loadingForm: false,\n      loadingInspection: false,\n      // 首检记录加载状态\n      submitting: false,\n      workOrderCurrentCjNum: null,\n      toolExpanded: false,\n      // 刀具表格展开状态\n      inspectionExpanded: false,\n      // 首检表格展开状态\n      defaultVisibleRows: 3 // 默认显示的行数\n    };\n  },\n\n  computed: {\n    // 刀具表格相关计算\n    defaultToolRows: function defaultToolRows() {\n      var total = this.toolRecords.length;\n      if (total <= 3) return total;\n      return Math.max(3, Math.floor(total / 2));\n    },\n    visibleToolRecords: function visibleToolRecords() {\n      if (this.toolExpanded) {\n        return this.toolRecords;\n      } else {\n        return this.toolRecords.slice(0, this.defaultToolRows);\n      }\n    },\n    hasMoreToolRecords: function hasMoreToolRecords() {\n      return this.toolRecords.length > this.defaultToolRows;\n    },\n    remainingToolRecords: function remainingToolRecords() {\n      return this.toolRecords.length - this.defaultToolRows;\n    },\n    // 首检表格相关计算\n    defaultInspectionRows: function defaultInspectionRows() {\n      var total = this.inspectionRecords.length;\n      if (total <= 2) return total; // 首检表格默认显示2行\n      return Math.max(2, Math.floor(total / 2));\n    },\n    visibleInspectionRecords: function visibleInspectionRecords() {\n      if (this.inspectionExpanded) {\n        return this.inspectionRecords;\n      } else {\n        return this.inspectionRecords.slice(0, this.defaultInspectionRows);\n      }\n    },\n    hasMoreInspectionRecords: function hasMoreInspectionRecords() {\n      return this.inspectionRecords.length > this.defaultInspectionRows;\n    },\n    remainingInspectionRecords: function remainingInspectionRecords() {\n      return this.inspectionRecords.length - this.defaultInspectionRows;\n    }\n  },\n  methods: {\n    // 切换表格展开状态\n    toggleExpand: function toggleExpand(tableType) {\n      if (tableType === 'tool') {\n        this.toolExpanded = !this.toolExpanded;\n      } else if (tableType === 'inspection') {\n        this.inspectionExpanded = !this.inspectionExpanded;\n      }\n    },\n    // 刷新按钮处理方法\n    handleRefresh: function handleRefresh() {\n      var _this = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n        return _regenerator.default.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!(_this.machineNo && _this.workOrderNo)) {\n                  _context.next = 4;\n                  break;\n                }\n                _context.next = 3;\n                return Promise.all([_this.fetchFormData(), _this.fetchDefaultToolFromWorkOrder(), _this.fetchInspectionRecords()]);\n              case 3:\n                // 刷新后赋值第一行 currentCjNum\n                if (_this.toolRecords.length > 0) {\n                  _this.$set(_this.toolRecords[0], 'currentCjNum', _this.workOrderCurrentCjNum);\n                }\n              case 4:\n                _this.$showMessage('刷新完成');\n              case 5:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }))();\n    },\n    // 获取工单首检记录\n    fetchInspectionRecords: function fetchInspectionRecords() {\n      var _this2 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n        var res, list;\n        return _regenerator.default.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                if (_this2.workOrderNo) {\n                  _context2.next = 3;\n                  break;\n                }\n                __f__(\"warn\", '工单号为空,跳过获取首检记录', \" at pages/moldRecord.vue:239\");\n                return _context2.abrupt(\"return\");\n              case 3:\n                _this2.loadingInspection = true;\n                _context2.prev = 4;\n                _context2.next = 7;\n                return _this2.$post({\n                  url: '/MesCutterLedger/GetInspectionRecords',\n                  data: JSON.stringify({\n                    aufnr: _this2.workOrderNo,\n                    ftype: '首检'\n                  }),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 7:\n                res = _context2.sent;\n                if (res.status === 0) {\n                  // 根据实际接口返回结构调整\n                  list = Array.isArray(res.data) ? res.data : res.data && res.data.tbBillList ? res.data.tbBillList : res.data && res.data.data ? res.data.data : [];\n                  _this2.inspectionRecords = list || [];\n                } else {\n                  _this2.$showMessage(res.message || '获取首检记录失败');\n                  _this2.inspectionRecords = [];\n                }\n                _context2.next = 16;\n                break;\n              case 11:\n                _context2.prev = 11;\n                _context2.t0 = _context2[\"catch\"](4);\n                __f__(\"error\", '获取首检记录错误:', _context2.t0, \" at pages/moldRecord.vue:265\");\n                _this2.$showMessage('获取首检记录失败,请检查网络连接');\n                _this2.inspectionRecords = [];\n              case 16:\n                _context2.prev = 16;\n                _this2.loadingInspection = false;\n                return _context2.finish(16);\n              case 19:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, null, [[4, 11, 16, 19]]);\n      }))();\n    },\n    // 格式化日期\n    formatDate: function formatDate(dateStr) {\n      if (!dateStr) return '';\n      try {\n        var date = new Date(dateStr);\n        if (isNaN(date.getTime())) return String(dateStr);\n        return \"\".concat(date.getMonth() + 1, \"-\").concat(date.getDate(), \" \").concat(date.getHours(), \":\").concat(String(date.getMinutes()).padStart(2, '0'));\n      } catch (_unused) {\n        return String(dateStr);\n      }\n    },\n    // 其他已有方法保持不变...\n    fetchDefaultToolFromWorkOrder: function fetchDefaultToolFromWorkOrder() {\n      var _this3 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n        var _res$data, res, _ref, _order$CurrentCjNum, order, warn;\n        return _regenerator.default.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                if (_this3.machineNo) {\n                  _context3.next = 2;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 2:\n                _context3.prev = 2;\n                _context3.next = 5;\n                return _this3.$post({\n                  url: '/Womdaa/GetWomdaasByShow',\n                  data: JSON.stringify({\n                    machineNo: _this3.machineNo\n                  }),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 5:\n                res = _context3.sent;\n                if (res.status === 0 && Array.isArray((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.tbBillList) && res.data.tbBillList.length > 0) {\n                  order = res.data.tbBillList[0];\n                  _this3.selectedToolNo = order.cutterId || order.cutteR_ID || '';\n                  _this3.toolName = order.cutterName || order.cutteR_NAME || '';\n                  _this3.workOrderCurrentCjNum = (_ref = (_order$CurrentCjNum = order.CurrentCjNum) !== null && _order$CurrentCjNum !== void 0 ? _order$CurrentCjNum : order.currentCjNum) !== null && _ref !== void 0 ? _ref : null;\n                  if (order.modlLifeWorning !== undefined && order.modlLifeWorning !== null) {\n                    warn = Number(order.modlLifeWorning);\n                    _this3.lifeWarnInput = warn <= 1 ? (warn * 100).toFixed(0) : warn.toFixed(0);\n                  } else {\n                    _this3.lifeWarnInput = '';\n                  }\n                } else {\n                  _this3.workOrderCurrentCjNum = null;\n                }\n                _context3.next = 13;\n                break;\n              case 9:\n                _context3.prev = 9;\n                _context3.t0 = _context3[\"catch\"](2);\n                __f__(\"warn\", '自动带出工单刀具失败', _context3.t0, \" at pages/moldRecord.vue:309\");\n                _this3.workOrderCurrentCjNum = null;\n              case 13:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, null, [[2, 9]]);\n      }))();\n    },\n    fetchFormData: function fetchFormData() {\n      var _this4 = this;\n      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n        var payload, res, list, getField, mapped;\n        return _regenerator.default.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                if (!(!_this4.workOrderNo || !_this4.machineNo)) {\n                  _context4.next = 3;\n                  break;\n                }\n                __f__(\"warn\", '工单号或机台号为空,跳过获取表单数据', \" at pages/moldRecord.vue:316\");\n                return _context4.abrupt(\"return\");\n              case 3:\n                _this4.loadingForm = true;\n                payload = {\n                  workOrderNo: _this4.workOrderNo.trim(),\n                  machineNo: _this4.machineNo.trim()\n                };\n                _context4.prev = 5;\n                _context4.next = 8;\n                return _this4.$post({\n                  url: '/MesCutterLedger/GetFormData',\n                  data: JSON.stringify(payload),\n                  headers: {\n                    'Content-Type': 'application/json'\n                  }\n                });\n              case 8:\n                res = _context4.sent;\n                if (!(res.status !== 0)) {\n                  _context4.next = 13;\n                  break;\n                }\n                _this4.$showMessage(res.message || '获取表单数据失败');\n                _this4.toolRecords = [];\n                return _context4.abrupt(\"return\");\n              case 13:\n                list = Array.isArray(res.data) ? res.data : res.data && res.data.tbBillList ? res.data.tbBillList : res.data && res.data.data ? res.data.data : []; // 数据处理逻辑保持不变...\n                getField = function getField(obj) {\n                  for (var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n                    keys[_key - 1] = arguments[_key];\n                  }\n                  for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n                    var k = _keys[_i];\n                    if ((obj === null || obj === void 0 ? void 0 : obj[k]) !== undefined && (obj === null || obj === void 0 ? void 0 : obj[k]) !== null) return obj[k];\n                  }\n                  return null;\n                };\n                mapped = (list || []).map(function (t) {\n                  var _getField, _getField2;\n                  var upTimeRaw = getField(t, 'uP_TIME', 'UP_TIME', 'uPTime', 'UPTIME', 'UpTime');\n                  var downTimeRaw = getField(t, 'dowN_TIME', 'DOWN_TIME', 'downTime', 'DOWNTIME');\n                  var lifeWarnRaw = getField(t, 'lifE_WARN', 'LIFE_WARN', 'lifeWarn', 'LIFEWARN');\n                  var currentCjNum = getField(t, 'currentCjNum', 'CURRENTCJNUM', 'CurrentCjNum');\n                  var useCount = getField(t, 'usE_COUNT', 'USE_COUNT', 'useCount');\n                  var useLimit = getField(t, 'usE_LIMIT', 'USE_LIMIT', 'useLimit');\n                  var percent = '';\n                  if (useCount != null && useLimit != null && !isNaN(useCount) && !isNaN(useLimit) && Number(useLimit) > 0) {\n                    percent = (Number(useCount) / Number(useLimit) * 100).toFixed(0) + '%';\n                  }\n                  var parseNumber = function parseNumber(v) {\n                    if (v === null || v === undefined || v === '') return null;\n                    var s = String(v).replace(/[,%%]/g, '').trim();\n                    var n = parseFloat(s);\n                    return Number.isFinite(n) ? n : null;\n                  };\n                  var formatPercent = function formatPercent(n) {\n                    if (n === null || n === undefined || isNaN(n)) return '';\n                    if (n <= 1) return \"\".concat((n * 100).toFixed(0), \"%\");\n                    return \"\".concat(Number(n).toFixed(0), \"%\");\n                  };\n                  var lifeWarnNum = parseNumber(lifeWarnRaw);\n                  var warnStatus = getField(t, 'status', 'STATUS') || '';\n                  if (lifeWarnNum !== null && useCount != null && useLimit != null && !isNaN(useCount) && !isNaN(useLimit) && Number(useLimit) > 0) {\n                    var percentNum = Number(useCount) / Number(useLimit);\n                    warnStatus = percentNum >= lifeWarnNum ? '预警' : '正常';\n                  } else {\n                    warnStatus = warnStatus || '未知';\n                  }\n                  return {\n                    id: getField(t, 'id', 'ID') || \"\".concat(getField(t, 'cutteR_ID') || getField(t, 'CUTTER_ID') || '', \"-\").concat(upTimeRaw || ''),\n                    no: getField(t, 'cutteR_ID', 'CUTTER_ID', 'cutterId', 'no') || '',\n                    name: getField(t, 'cutteR_NAME', 'CUTTER_NAME', 'cutterName', 'name') || '',\n                    upTime: _this4.formatDateTime(upTimeRaw),\n                    upCount: (_getField = getField(t, 'uP_COUNT', 'UP_COUNT', 'upCount')) !== null && _getField !== void 0 ? _getField : '',\n                    downTime: _this4.formatDateTime(downTimeRaw),\n                    downCount: (_getField2 = getField(t, 'dowN_COUNT', 'DOWN_COUNT', 'downCount')) !== null && _getField2 !== void 0 ? _getField2 : '',\n                    useCount: useCount !== null && useCount !== void 0 ? useCount : '',\n                    useLimit: useLimit !== null && useLimit !== void 0 ? useLimit : '',\n                    lifePercent: percent,\n                    lifeWarn: formatPercent(lifeWarnNum),\n                    warnStatus: warnStatus,\n                    currentCjNum: currentCjNum\n                  };\n                });\n                mapped.sort(function (a, b) {\n                  var parse = function parse(s) {\n                    if (!s) return 0;\n                    var year = new Date().getFullYear();\n                    return new Date(\"\".concat(year, \"-\").concat(s.replace(/-/g, '-'), \":00\")).getTime();\n                  };\n                  return parse(b.upTime) - parse(a.upTime);\n                });\n                _this4.toolRecords = mapped;\n                _context4.next = 25;\n                break;\n              case 20:\n                _context4.prev = 20;\n                _context4.t0 = _context4[\"catch\"](5);\n                __f__(\"error\", '获取表单数据错误:', _context4.t0, \" at pages/moldRecord.vue:409\");\n                _this4.$showMessage('获取数据失败,请检查网络连接');\n                _this4.toolRecords = [];\n              case 25:\n                _context4.prev = 25;\n                _this4.loadingForm = false;\n                return _context4.finish(25);\n              case 28:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4, null, [[5, 20, 25, 28]]);\n      }))();\n    },\n    formatDateTime: function formatDateTime(dateTimeStr) {\n      if (!dateTimeStr) return '';\n      try {\n        var s = String(dateTimeStr).trim();\n        if (/^\\d{10}$/.test(s)) {\n          var d = new Date(Number(s) * 1000);\n          return \"\".concat(d.getMonth() + 1, \"-\").concat(d.getDate(), \" \").concat(d.getHours(), \":\").concat(String(d.getMinutes()).padStart(2, '0'));\n        }\n        if (/^\\d{13}$/.test(s)) {\n          var _d = new Date(Number(s));\n          return \"\".concat(_d.getMonth() + 1, \"-\").concat(_d.getDate(), \" \").concat(_d.getHours(), \":\").concat(String(_d.getMinutes()).padStart(2, '0'));\n        }\n        var date = new Date(dateTimeStr);\n        if (!isNaN(date.getTime())) {\n          return \"\".concat(date.getMonth() + 1, \"-\").concat(date.getDate(), \" \").concat(date.getHours(), \":\").concat(String(date.getMinutes()).padStart(2, '0'));\n        }\n        var match = String(dateTimeStr).match(/(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,2}).*?(\\d{1,2}:\\d{2})/);\n        if (match) return \"\".concat(match[1].replace(/-/g, '/').replace(/^\\d{4}\\//, function (m) {\n          return m;\n        }), \" \").concat(match[2]);\n        return String(dateTimeStr);\n      } catch (_unused2) {\n        return String(dateTimeStr);\n      }\n    }\n  },\n  mounted: function mounted() {\n    var _this5 = this;\n    this.machineNo = uni.getStorageSync('machineNo') || '';\n    this.workOrderNo = uni.getStorageSync('daa001') || '';\n    if (this.machineNo && this.workOrderNo) {\n      this.fetchFormData().then( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n        return _regenerator.default.wrap(function _callee5$(_context5) {\n          while (1) {\n            switch (_context5.prev = _context5.next) {\n              case 0:\n                _context5.next = 2;\n                return _this5.fetchDefaultToolFromWorkOrder();\n              case 2:\n                _context5.next = 4;\n                return _this5.fetchInspectionRecords();\n              case 4:\n                if (_this5.toolRecords.length > 0) {\n                  _this5.$set(_this5.toolRecords[0], 'currentCjNum', _this5.workOrderCurrentCjNum);\n                }\n              case 5:\n              case \"end\":\n                return _context5.stop();\n            }\n          }\n        }, _callee5);\n      })));\n    } else {\n      __f__(\"warn\", '机台号或工单号为空,无法获取数据', \" at pages/moldRecord.vue:454\");\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 */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9sZFJlY29yZC52dWUiXSwibmFtZXMiOlsiZGF0YSIsIm1hY2hpbmVObyIsIndvcmtPcmRlck5vIiwic2VsZWN0ZWRUb29sTm8iLCJ0b29sTmFtZSIsInVzZUxpbWl0SW5wdXQiLCJsaWZlV2FybklucHV0IiwidG9vbFJlY29yZHMiLCJpbnNwZWN0aW9uUmVjb3JkcyIsImxvYWRpbmdGb3JtIiwibG9hZGluZ0luc3BlY3Rpb24iLCJzdWJtaXR0aW5nIiwid29ya09yZGVyQ3VycmVudENqTnVtIiwidG9vbEV4cGFuZGVkIiwiaW5zcGVjdGlvbkV4cGFuZGVkIiwiZGVmYXVsdFZpc2libGVSb3dzIiwiY29tcHV0ZWQiLCJkZWZhdWx0VG9vbFJvd3MiLCJ2aXNpYmxlVG9vbFJlY29yZHMiLCJoYXNNb3JlVG9vbFJlY29yZHMiLCJyZW1haW5pbmdUb29sUmVjb3JkcyIsImRlZmF1bHRJbnNwZWN0aW9uUm93cyIsInZpc2libGVJbnNwZWN0aW9uUmVjb3JkcyIsImhhc01vcmVJbnNwZWN0aW9uUmVjb3JkcyIsInJlbWFpbmluZ0luc3BlY3Rpb25SZWNvcmRzIiwibWV0aG9kcyIsInRvZ2dsZUV4cGFuZCIsImhhbmRsZVJlZnJlc2giLCJQcm9taXNlIiwiZmV0Y2hJbnNwZWN0aW9uUmVjb3JkcyIsInVybCIsImF1Zm5yIiwiZnR5cGUiLCJoZWFkZXJzIiwicmVzIiwibGlzdCIsImZvcm1hdERhdGUiLCJmZXRjaERlZmF1bHRUb29sRnJvbVdvcmtPcmRlciIsIm9yZGVyIiwid2FybiIsImZldGNoRm9ybURhdGEiLCJwYXlsb2FkIiwiZ2V0RmllbGQiLCJrZXlzIiwibWFwcGVkIiwicGVyY2VudCIsIndhcm5TdGF0dXMiLCJpZCIsIm5vIiwibmFtZSIsInVwVGltZSIsInVwQ291bnQiLCJkb3duVGltZSIsImRvd25Db3VudCIsInVzZUNvdW50IiwidXNlTGltaXQiLCJsaWZlUGVyY2VudCIsImxpZmVXYXJuIiwiY3VycmVudENqTnVtIiwiZm9ybWF0RGF0ZVRpbWUiLCJtb3VudGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFvSkE7RUFDQUE7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUFBO01BQ0FDO01BQ0FDO01BQUE7TUFDQUM7TUFDQUM7TUFDQUM7TUFBQTtNQUNBQztNQUFBO01BQ0FDO0lBQ0E7RUFDQTs7RUFDQUM7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFFQTtJQUNBQztNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0FDO01BQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUE7SUFDQUM7TUFBQTtNQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQUEsTUFDQTtrQkFBQTtrQkFBQTtnQkFBQTtnQkFBQTtnQkFBQSxPQUNBQyxhQUNBLHVCQUNBLHVDQUNBLCtCQUNBO2NBQUE7Z0JBQ0E7Z0JBQ0E7a0JBQ0E7Z0JBQ0E7Y0FBQTtnQkFFQTtjQUFBO2NBQUE7Z0JBQUE7WUFBQTtVQUFBO1FBQUE7TUFBQTtJQUNBO0lBRUE7SUFDQUM7TUFBQTtNQUFBO1FBQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQSxJQUNBO2tCQUFBO2tCQUFBO2dCQUFBO2dCQUNBO2dCQUFBO2NBQUE7Z0JBR0E7Z0JBQUE7Z0JBQUE7Z0JBQUEsT0FFQTtrQkFDQUM7a0JBQ0E5QjtvQkFDQStCO29CQUNBQztrQkFDQTtrQkFDQUM7b0JBQUE7a0JBQUE7Z0JBQ0E7Y0FBQTtnQkFQQUM7Z0JBU0E7a0JBQ0E7a0JBQ0FDLDRDQUNBRCx3REFDQUEsNENBQ0E7a0JBQ0E7Z0JBQ0E7a0JBQ0E7a0JBQ0E7Z0JBQ0E7Z0JBQUE7Z0JBQUE7Y0FBQTtnQkFBQTtnQkFBQTtnQkFFQTtnQkFDQTtnQkFDQTtjQUFBO2dCQUFBO2dCQUVBO2dCQUFBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBRUE7SUFFQTtJQUNBRTtNQUNBO01BQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUVBO0lBQ0FDO01BQUE7TUFBQTtRQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQUEsSUFDQTtrQkFBQTtrQkFBQTtnQkFBQTtnQkFBQTtjQUFBO2dCQUFBO2dCQUFBO2dCQUFBLE9BRUE7a0JBQ0FQO2tCQUNBOUI7b0JBQUFDO2tCQUFBO2tCQUNBZ0M7b0JBQUE7a0JBQUE7Z0JBQ0E7Y0FBQTtnQkFKQUM7Z0JBS0E7a0JBQ0FJO2tCQUNBO2tCQUNBO2tCQUNBO2tCQUNBO29CQUNBQztvQkFDQTtrQkFDQTtvQkFDQTtrQkFDQTtnQkFDQTtrQkFDQTtnQkFDQTtnQkFBQTtnQkFBQTtjQUFBO2dCQUFBO2dCQUFBO2dCQUVBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBRUE7SUFFQUM7TUFBQTtNQUFBO1FBQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQSxNQUNBO2tCQUFBO2tCQUFBO2dCQUFBO2dCQUNBO2dCQUFBO2NBQUE7Z0JBR0E7Z0JBQ0FDO2tCQUNBdkM7a0JBQ0FEO2dCQUNBO2dCQUFBO2dCQUFBO2dCQUFBLE9BRUE7a0JBQ0E2QjtrQkFDQTlCO2tCQUNBaUM7b0JBQUE7a0JBQUE7Z0JBQ0E7Y0FBQTtnQkFKQUM7Z0JBQUEsTUFLQUE7a0JBQUE7a0JBQUE7Z0JBQUE7Z0JBQ0E7Z0JBQ0E7Z0JBQUE7Y0FBQTtnQkFHQUMsNENBQ0FELHdEQUNBQSw0Q0FDQSxJQUVBO2dCQUNBUTtrQkFBQTtvQkFBQUM7a0JBQUE7a0JBQ0E7b0JBQUE7b0JBQUE7a0JBQUE7a0JBQ0E7Z0JBQ0E7Z0JBRUFDO2tCQUFBO2tCQUNBO2tCQUNBO2tCQUNBO2tCQUNBO2tCQUVBO2tCQUNBO2tCQUVBO2tCQUNBO29CQUNBQztrQkFDQTtrQkFFQTtvQkFDQTtvQkFDQTtvQkFDQTtvQkFDQTtrQkFDQTtrQkFDQTtvQkFDQTtvQkFDQTtvQkFDQTtrQkFDQTtrQkFDQTtrQkFFQTtrQkFDQTtvQkFDQTtvQkFDQUM7a0JBQ0E7b0JBQ0FBO2tCQUNBO2tCQUVBO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FDO29CQUNBQztvQkFDQUM7b0JBQ0FYO29CQUNBWTtrQkFDQTtnQkFDQTtnQkFFQWQ7a0JBQ0E7b0JBQ0E7b0JBQ0E7b0JBQ0E7a0JBQ0E7a0JBQ0E7Z0JBQ0E7Z0JBRUE7Z0JBQUE7Z0JBQUE7Y0FBQTtnQkFBQTtnQkFBQTtnQkFFQTtnQkFDQTtnQkFDQTtjQUFBO2dCQUFBO2dCQUVBO2dCQUFBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBRUE7SUFFQWU7TUFDQTtNQUNBO1FBQ0E7UUFDQTtVQUNBO1VBQ0E7UUFDQTtRQUNBO1VBQ0E7VUFDQTtRQUNBO1FBQ0E7UUFDQTtVQUNBO1FBQ0E7UUFDQTtRQUNBO1VBQUE7UUFBQTtRQUNBO01BQ0E7UUFDQTtNQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUFBO0lBQ0E7SUFDQTtJQUVBO01BQ0E7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQTtnQkFBQSxPQUNBO2NBQUE7Z0JBQUE7Z0JBQUEsT0FDQTtjQUFBO2dCQUNBO2tCQUNBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBLENBQ0E7SUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiMTE5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gICAgPHZpZXcgY2xhc3M9XCJwYWdlXCI+XHJcbiAgICAgICAgPCEtLSDmk43kvZzmjInpkq4gLS0+XHJcbiAgICAgICAgPHZpZXcgY2xhc3M9XCJidXR0b24tcm93XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYXZlLWJ0blwiIEBjbGljaz1cImhhbmRsZVJlZnJlc2hcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nRm9ybSB8fCBzdWJtaXR0aW5nIHx8IGxvYWRpbmdJbnNwZWN0aW9uXCI+5Yi35pawPC9idXR0b24+XHJcbiAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICA8IS0tIOWIgOWFt+S9v+eUqOiusOW9leihqOagvCAtLT5cclxuICAgICAgICA8dmlldyBjbGFzcz1cInRhYmxlLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMz7kuIrkuIvliIDorrDlvZU8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImV4cGFuZC1idG5cIiBAY2xpY2s9XCJ0b2dnbGVFeHBhbmQoJ3Rvb2wnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHRvb2xFeHBhbmRlZCA/ICfmlLbotbcnIDogJ+WxleW8gCcgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInN0eWxlZC10YWJsZVwiIDpjbGFzcz1cInsnZXhwYW5kZWQnOiB0b29sRXhwYW5kZWR9XCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDo3JVwiPuWIgOWFt+e8luWPtzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjEyJVwiPuWIgOWFt+WQjeensDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjEwJVwiPuS4iuWIgOaXtumXtDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7kuIrliIDorqHmlbA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7kuIvliIDml7bpl7Q8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJudW1cIiBzdHlsZT1cIndpZHRoOjclXCI+5LiL5YiA6K6h5pWwPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibnVtXCIgc3R5bGU9XCJ3aWR0aDo3JVwiPuS9v+eUqOasoeaVsDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7kvb/nlKjkuIrpmZA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJudW1cIiBzdHlsZT1cIndpZHRoOjclXCI+5a+/5ZG95q+UJTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm51bVwiIHN0eWxlPVwid2lkdGg6NyVcIj7lr7/lkb3mr5TpooTorablgLw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDo3JVwiPumihOitpueKtuaAgTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjclXCI+5YiA5YW35Zyo5py654q25oCBPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCIoaXRlbSwgaWR4KSBpbiB2aXNpYmxlVG9vbFJlY29yZHNcIiA6a2V5PVwiaXRlbS5pZFwiIDpjbGFzcz1cInsncm93LW9kZCc6IGlkeCAlIDIgPT09IDB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpdGVtLm5vIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGVmdFwiPnt7IGl0ZW0ubmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpdGVtLnVwVGltZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm51bVwiPnt7IGl0ZW0udXBDb3VudCAhPSBudWxsID8gaXRlbS51cENvdW50IDogJycgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5kb3duVGltZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm51bVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpZHggPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiFpdGVtLmRvd25UaW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uY3VycmVudENqTnVtICE9IG51bGwgPyBpdGVtLmN1cnJlbnRDak51bSA6ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRvd25Db3VudCAhPSBudWxsID8gaXRlbS5kb3duQ291bnQgOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRvd25Db3VudCAhPSBudWxsID8gaXRlbS5kb3duQ291bnQgOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImlkeCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiIWl0ZW0uZG93blRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmN1cnJlbnRDak51bSAhPSBudWxsICYmIGl0ZW0udXBDb3VudCAhPSBudWxsID8gKE51bWJlcihpdGVtLmN1cnJlbnRDak51bSkgLSBOdW1iZXIoaXRlbS51cENvdW50KSkgOiAoaXRlbS51c2VDb3VudCAhPSBudWxsID8gaXRlbS51c2VDb3VudCA6ICcnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS51c2VDb3VudCAhPSBudWxsID8gaXRlbS51c2VDb3VudCA6ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udXNlQ291bnQgIT0gbnVsbCA/IGl0ZW0udXNlQ291bnQgOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+e3sgaXRlbS51c2VMaW1pdCAhPSBudWxsID8gaXRlbS51c2VMaW1pdCA6ICcnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cImlkeCA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiIWl0ZW0uZG93blRpbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmN1cnJlbnRDak51bSAhPSBudWxsICYmIGl0ZW0udXBDb3VudCAhPSBudWxsICYmIGl0ZW0udXNlTGltaXQgIT0gbnVsbCAmJiBOdW1iZXIoaXRlbS51c2VMaW1pdCkgPiAwID8gTWF0aC5yb3VuZCgoTnVtYmVyKGl0ZW0uY3VycmVudENqTnVtKSAtIE51bWJlcihpdGVtLnVwQ291bnQpKSAvIE51bWJlcihpdGVtLnVzZUxpbWl0KSAqIDEwMCkgKyAnJScgOiAoaXRlbS5saWZlUGVyY2VudCAhPSBudWxsID8gaXRlbS5saWZlUGVyY2VudCA6ICcnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5saWZlUGVyY2VudCAhPSBudWxsID8gaXRlbS5saWZlUGVyY2VudCA6ICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGlmZVBlcmNlbnQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm51bVwiPnt7IGl0ZW0ubGlmZVdhcm4gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgOmNsYXNzPVwiaXRlbS53YXJuU3RhdHVzID09PSAn6aKE6K2mJyA/ICd3YXJuLWNlbGwnIDogKGl0ZW0ud2FyblN0YXR1cyA9PT0gJ+ato+W4uCcgPyAnb2stY2VsbCcgOiAnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJpdGVtLndhcm5TdGF0dXMgPT09ICfpooToraYnXCIgY2xhc3M9XCJ3YXJuLWJhZGdlXCI+6K2m5ZGKPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPnt7IGl0ZW0ud2FyblN0YXR1cyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kb3duVGltZSA/ICfkuIvmnLonIDogJ+WcqOacuicgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciB2LWlmPVwiIXRvb2xSZWNvcmRzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEyXCI+5pqC5peg5pWw5o2uPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciB2LWlmPVwiaGFzTW9yZVRvb2xSZWNvcmRzICYmICF0b29sRXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMlwiIGNsYXNzPVwibW9yZS1yZWNvcmRzLXRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+6L+Y5pyJIHt7IHJlbWFpbmluZ1Rvb2xSZWNvcmRzIH19IOadoeiusOW9le+8jOeCueWHu1wi5bGV5byAXCLmjInpkq7mn6XnnIvlhajpg6g8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC92aWV3PlxyXG5cclxuICAgICAgICA8IS0tIOW3peWNlemmluajgOiusOW9leihqOagvCAtLT5cclxuICAgICAgICA8dmlldyBjbGFzcz1cInRhYmxlLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgPHZpZXcgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMz7lt6XljZXpppbmo4DorrDlvZU8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImV4cGFuZC1idG5cIiBAY2xpY2s9XCJ0b2dnbGVFeHBhbmQoJ2luc3BlY3Rpb24nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGluc3BlY3Rpb25FeHBhbmRlZCA/ICfmlLbotbcnIDogJ+WxleW8gCcgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3ZpZXc+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInN0eWxlZC10YWJsZVwiIDpjbGFzcz1cInsnZXhwYW5kZWQnOiBpbnNwZWN0aW9uRXhwYW5kZWR9XCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7mo4DpqozljZXlj7c8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7mo4DpqozkurrlkZg8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7mo4Dpqozml6XmnJ88L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7mnLrlj7DnvJblj7c8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7mj5DkuqTmoIfor4Y8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7mo4Dpqoznu5Pmnpw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7kvZzlup/moIfor4Y8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDoxMCVcIj7lpIfms6g8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cIihpdGVtLCBpZHgpIGluIHZpc2libGVJbnNwZWN0aW9uUmVjb3Jkc1wiIDprZXk9XCJpdGVtLmlkIHx8IGlkeFwiIDpjbGFzcz1cInsncm93LW9kZCc6IGlkeCAlIDIgPT09IDB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0g5L+u5pS55Li65bCP6am85bOw5qC85byPIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5yZWxlYXNlTm8gfHwgJycgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5mY2hlY2tCeSB8fCAnJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBmb3JtYXREYXRlKGl0ZW0uZmNoZWNrRGF0ZSkgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5saW5lTm8gfHwgJycgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5mc3VibWl0ID09IDEgPyAn5bey5o+Q5LqkJyA6ICfmnKrmj5DkuqQnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uZmNhbmNlbCA9PSAnWScgPyAn5L2c5bqfJyA6ICfmnKrkvZzlup8nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uZnNlY29uZFJlc3UgfHwgJycgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsZWZ0XCI+e3sgaXRlbS5yZW1la2UgfHwgJycgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIHYtaWY9XCIhaW5zcGVjdGlvblJlY29yZHMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTBcIj7mmoLml6Dpppbmo4DorrDlvZU8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIHYtaWY9XCJoYXNNb3JlSW5zcGVjdGlvblJlY29yZHMgJiYgIWluc3BlY3Rpb25FeHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwXCIgY2xhc3M9XCJtb3JlLXJlY29yZHMtdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7ov5jmnIkge3sgcmVtYWluaW5nSW5zcGVjdGlvblJlY29yZHMgfX0g5p2h6K6w5b2V77yM54K55Ye7XCLlsZXlvIBcIuaMiemSruafpeeci+WFqOmDqDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L3ZpZXc+XHJcbiAgICA8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG4gICAgZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgICAgIGRhdGEoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBtYWNoaW5lTm86ICcnLFxyXG4gICAgICAgICAgICAgICAgd29ya09yZGVyTm86ICcnLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRUb29sTm86ICcnLFxyXG4gICAgICAgICAgICAgICAgdG9vbE5hbWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgdXNlTGltaXRJbnB1dDogJycsXHJcbiAgICAgICAgICAgICAgICBsaWZlV2FybklucHV0OiAnJyxcclxuICAgICAgICAgICAgICAgIHRvb2xSZWNvcmRzOiBbXSxcclxuICAgICAgICAgICAgICAgIGluc3BlY3Rpb25SZWNvcmRzOiBbXSwgLy8g6aaW5qOA6K6w5b2VXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nRm9ybTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nSW5zcGVjdGlvbjogZmFsc2UsIC8vIOmmluajgOiusOW9leWKoOi9veeKtuaAgVxyXG4gICAgICAgICAgICAgICAgc3VibWl0dGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB3b3JrT3JkZXJDdXJyZW50Q2pOdW06IG51bGwsXHJcbiAgICAgICAgICAgICAgICB0b29sRXhwYW5kZWQ6IGZhbHNlLCAvLyDliIDlhbfooajmoLzlsZXlvIDnirbmgIFcclxuICAgICAgICAgICAgICAgIGluc3BlY3Rpb25FeHBhbmRlZDogZmFsc2UsIC8vIOmmluajgOihqOagvOWxleW8gOeKtuaAgVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZpc2libGVSb3dzOiAzLCAvLyDpu5jorqTmmL7npLrnmoTooYzmlbBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgICAgIC8vIOWIgOWFt+ihqOagvOebuOWFs+iuoeeul1xyXG4gICAgICAgICAgICBkZWZhdWx0VG9vbFJvd3MoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMudG9vbFJlY29yZHMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsIDw9IDMpIHJldHVybiB0b3RhbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCgzLCBNYXRoLmZsb29yKHRvdGFsIC8gMikpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB2aXNpYmxlVG9vbFJlY29yZHMoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b29sRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b29sUmVjb3JkcztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9vbFJlY29yZHMuc2xpY2UoMCwgdGhpcy5kZWZhdWx0VG9vbFJvd3MpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBoYXNNb3JlVG9vbFJlY29yZHMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b29sUmVjb3Jkcy5sZW5ndGggPiB0aGlzLmRlZmF1bHRUb29sUm93cztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcmVtYWluaW5nVG9vbFJlY29yZHMoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b29sUmVjb3Jkcy5sZW5ndGggLSB0aGlzLmRlZmF1bHRUb29sUm93cztcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIC8vIOmmluajgOihqOagvOebuOWFs+iuoeeul1xyXG4gICAgICAgICAgICBkZWZhdWx0SW5zcGVjdGlvblJvd3MoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMuaW5zcGVjdGlvblJlY29yZHMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsIDw9IDIpIHJldHVybiB0b3RhbDsgLy8g6aaW5qOA6KGo5qC86buY6K6k5pi+56S6MuihjFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDIsIE1hdGguZmxvb3IodG90YWwgLyAyKSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHZpc2libGVJbnNwZWN0aW9uUmVjb3JkcygpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluc3BlY3Rpb25FeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3BlY3Rpb25SZWNvcmRzO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnNwZWN0aW9uUmVjb3Jkcy5zbGljZSgwLCB0aGlzLmRlZmF1bHRJbnNwZWN0aW9uUm93cyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGhhc01vcmVJbnNwZWN0aW9uUmVjb3JkcygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3BlY3Rpb25SZWNvcmRzLmxlbmd0aCA+IHRoaXMuZGVmYXVsdEluc3BlY3Rpb25Sb3dzO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZW1haW5pbmdJbnNwZWN0aW9uUmVjb3JkcygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3BlY3Rpb25SZWNvcmRzLmxlbmd0aCAtIHRoaXMuZGVmYXVsdEluc3BlY3Rpb25Sb3dzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgICAgIC8vIOWIh+aNouihqOagvOWxleW8gOeKtuaAgVxyXG4gICAgICAgICAgICB0b2dnbGVFeHBhbmQodGFibGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFibGVUeXBlID09PSAndG9vbCcpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xFeHBhbmRlZCA9ICF0aGlzLnRvb2xFeHBhbmRlZDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGFibGVUeXBlID09PSAnaW5zcGVjdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3BlY3Rpb25FeHBhbmRlZCA9ICF0aGlzLmluc3BlY3Rpb25FeHBhbmRlZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIC8vIOWIt+aWsOaMiemSruWkhOeQhuaWueazlVxyXG4gICAgICAgICAgICBhc3luYyBoYW5kbGVSZWZyZXNoKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFjaGluZU5vICYmIHRoaXMud29ya09yZGVyTm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hGb3JtRGF0YSgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZldGNoRGVmYXVsdFRvb2xGcm9tV29ya09yZGVyKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hJbnNwZWN0aW9uUmVjb3JkcygpXHJcbiAgICAgICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5Yi35paw5ZCO6LWL5YC856ys5LiA6KGMIGN1cnJlbnRDak51bVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvb2xSZWNvcmRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMudG9vbFJlY29yZHNbMF0sICdjdXJyZW50Q2pOdW0nLCB0aGlzLndvcmtPcmRlckN1cnJlbnRDak51bSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+WIt+aWsOWujOaIkCcpO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgLy8g6I635Y+W5bel5Y2V6aaW5qOA6K6w5b2VXHJcbiAgICAgICAgICAgIGFzeW5jIGZldGNoSW5zcGVjdGlvblJlY29yZHMoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMud29ya09yZGVyTm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+W3peWNleWPt+S4uuepuu+8jOi3s+i/h+iOt+WPlummluajgOiusOW9lScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0luc3BlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL01lc0N1dHRlckxlZGdlci9HZXRJbnNwZWN0aW9uUmVjb3JkcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1Zm5yOiB0aGlzLndvcmtPcmRlck5vLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnR5cGU6ICfpppbmo4AnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmoLnmja7lrp7pmYXmjqXlj6Pov5Tlm57nu5PmnoTosIPmlbRcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEpID8gcmVzLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHJlcy5kYXRhICYmIHJlcy5kYXRhLnRiQmlsbExpc3QpID8gcmVzLmRhdGEudGJCaWxsTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHJlcy5kYXRhICYmIHJlcy5kYXRhLmRhdGEpID8gcmVzLmRhdGEuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3BlY3Rpb25SZWNvcmRzID0gbGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZShyZXMubWVzc2FnZSB8fCAn6I635Y+W6aaW5qOA6K6w5b2V5aSx6LSlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zcGVjdGlvblJlY29yZHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+iOt+WPlummluajgOiusOW9lemUmeivrzonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoJ+iOt+WPlummluajgOiusOW9leWksei0pe+8jOivt+ajgOafpee9kee7nOi/nuaOpScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zcGVjdGlvblJlY29yZHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nSW5zcGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgLy8g5qC85byP5YyW5pel5pyfXHJcbiAgICAgICAgICAgIGZvcm1hdERhdGUoZGF0ZVN0cikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFkYXRlU3RyKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gU3RyaW5nKGRhdGVTdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtkYXRlLmdldE1vbnRoKCkgKyAxfS0ke2RhdGUuZ2V0RGF0ZSgpfSAke2RhdGUuZ2V0SG91cnMoKX06JHtTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoZGF0ZVN0cik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvLyDlhbbku5blt7LmnInmlrnms5Xkv53mjIHkuI3lj5guLi5cclxuICAgICAgICAgICAgYXN5bmMgZmV0Y2hEZWZhdWx0VG9vbEZyb21Xb3JrT3JkZXIoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWFjaGluZU5vKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICcvV29tZGFhL0dldFdvbWRhYXNCeVNob3cnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7IG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8gfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDAgJiYgQXJyYXkuaXNBcnJheShyZXMuZGF0YT8udGJCaWxsTGlzdCkgJiYgcmVzLmRhdGEudGJCaWxsTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyID0gcmVzLmRhdGEudGJCaWxsTGlzdFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvb2xObyA9IG9yZGVyLmN1dHRlcklkIHx8IG9yZGVyLmN1dHRlUl9JRCB8fCAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sTmFtZSA9IG9yZGVyLmN1dHRlck5hbWUgfHwgb3JkZXIuY3V0dGVSX05BTUUgfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtID0gb3JkZXIuQ3VycmVudENqTnVtID8/IG9yZGVyLmN1cnJlbnRDak51bSA/PyBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JkZXIubW9kbExpZmVXb3JuaW5nICE9PSB1bmRlZmluZWQgJiYgb3JkZXIubW9kbExpZmVXb3JuaW5nICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXJuID0gTnVtYmVyKG9yZGVyLm1vZGxMaWZlV29ybmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpZmVXYXJuSW5wdXQgPSB3YXJuIDw9IDEgPyAod2FybiAqIDEwMCkudG9GaXhlZCgwKSA6IHdhcm4udG9GaXhlZCgwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlmZVdhcm5JbnB1dCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrT3JkZXJDdXJyZW50Q2pOdW0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+iHquWKqOW4puWHuuW3peWNleWIgOWFt+Wksei0pScsIGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGFzeW5jIGZldGNoRm9ybURhdGEoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMud29ya09yZGVyTm8gfHwgIXRoaXMubWFjaGluZU5vKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCflt6XljZXlj7fmiJbmnLrlj7Dlj7fkuLrnqbrvvIzot7Pov4fojrflj5booajljZXmlbDmja4nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdGb3JtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd29ya09yZGVyTm86IHRoaXMud29ya09yZGVyTm8udHJpbSgpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8udHJpbSgpXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL01lc0N1dHRlckxlZGdlci9HZXRGb3JtRGF0YScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKHJlcy5tZXNzYWdlIHx8ICfojrflj5booajljZXmlbDmja7lpLHotKUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sUmVjb3JkcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBBcnJheS5pc0FycmF5KHJlcy5kYXRhKSA/IHJlcy5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKHJlcy5kYXRhICYmIHJlcy5kYXRhLnRiQmlsbExpc3QpID8gcmVzLmRhdGEudGJCaWxsTGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAocmVzLmRhdGEgJiYgcmVzLmRhdGEuZGF0YSkgPyByZXMuZGF0YS5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pWw5o2u5aSE55CG6YC76L6R5L+d5oyB5LiN5Y+YLi4uXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0RmllbGQgPSAob2JqLCAuLi5rZXlzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSBpZiAob2JqPy5ba10gIT09IHVuZGVmaW5lZCAmJiBvYmo/LltrXSAhPT0gbnVsbCkgcmV0dXJuIG9ialtrXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkID0gKGxpc3QgfHwgW10pLm1hcCh0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBUaW1lUmF3ID0gZ2V0RmllbGQodCwgJ3VQX1RJTUUnLCAnVVBfVElNRScsICd1UFRpbWUnLCAnVVBUSU1FJywgJ1VwVGltZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3duVGltZVJhdyA9IGdldEZpZWxkKHQsICdkb3dOX1RJTUUnLCAnRE9XTl9USU1FJywgJ2Rvd25UaW1lJywgJ0RPV05USU1FJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpZmVXYXJuUmF3ID0gZ2V0RmllbGQodCwgJ2xpZkVfV0FSTicsICdMSUZFX1dBUk4nLCAnbGlmZVdhcm4nLCAnTElGRVdBUk4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudENqTnVtID0gZ2V0RmllbGQodCwgJ2N1cnJlbnRDak51bScsICdDVVJSRU5UQ0pOVU0nLCAnQ3VycmVudENqTnVtJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1c2VDb3VudCA9IGdldEZpZWxkKHQsICd1c0VfQ09VTlQnLCAnVVNFX0NPVU5UJywgJ3VzZUNvdW50Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZUxpbWl0ID0gZ2V0RmllbGQodCwgJ3VzRV9MSU1JVCcsICdVU0VfTElNSVQnLCAndXNlTGltaXQnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwZXJjZW50ID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1c2VDb3VudCAhPSBudWxsICYmIHVzZUxpbWl0ICE9IG51bGwgJiYgIWlzTmFOKHVzZUNvdW50KSAmJiAhaXNOYU4odXNlTGltaXQpICYmIE51bWJlcih1c2VMaW1pdCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50ID0gKChOdW1iZXIodXNlQ291bnQpIC8gTnVtYmVyKHVzZUxpbWl0KSkgKiAxMDApLnRvRml4ZWQoMCkgKyAnJSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlTnVtYmVyID0gdiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gJycpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IFN0cmluZyh2KS5yZXBsYWNlKC9bLO+8hSVdL2csICcnKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gcGFyc2VGbG9hdChzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobikgPyBuIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0UGVyY2VudCA9IG4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09IG51bGwgfHwgbiA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKG4pKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA8PSAxKSByZXR1cm4gYCR7KG4gKiAxMDApLnRvRml4ZWQoMCl9JWA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7TnVtYmVyKG4pLnRvRml4ZWQoMCl9JWA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpZmVXYXJuTnVtID0gcGFyc2VOdW1iZXIobGlmZVdhcm5SYXcpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhcm5TdGF0dXMgPSBnZXRGaWVsZCh0LCAnc3RhdHVzJywgJ1NUQVRVUycpIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlmZVdhcm5OdW0gIT09IG51bGwgJiYgdXNlQ291bnQgIT0gbnVsbCAmJiB1c2VMaW1pdCAhPSBudWxsICYmICFpc05hTih1c2VDb3VudCkgJiYgIWlzTmFOKHVzZUxpbWl0KSAmJiBOdW1iZXIodXNlTGltaXQpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGVyY2VudE51bSA9IE51bWJlcih1c2VDb3VudCkgLyBOdW1iZXIodXNlTGltaXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyblN0YXR1cyA9IChwZXJjZW50TnVtID49IGxpZmVXYXJuTnVtKSA/ICfpooToraYnIDogJ+ato+W4uCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuU3RhdHVzID0gd2FyblN0YXR1cyB8fCAn5pyq55+lJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBnZXRGaWVsZCh0LCAnaWQnLCAnSUQnKSB8fCBgJHtnZXRGaWVsZCh0LCAnY3V0dGVSX0lEJykgfHwgZ2V0RmllbGQodCwgJ0NVVFRFUl9JRCcpIHx8ICcnfS0ke3VwVGltZVJhdyB8fCAnJ31gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm86IGdldEZpZWxkKHQsICdjdXR0ZVJfSUQnLCAnQ1VUVEVSX0lEJywgJ2N1dHRlcklkJywgJ25vJykgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZXRGaWVsZCh0LCAnY3V0dGVSX05BTUUnLCAnQ1VUVEVSX05BTUUnLCAnY3V0dGVyTmFtZScsICduYW1lJykgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cFRpbWU6IHRoaXMuZm9ybWF0RGF0ZVRpbWUodXBUaW1lUmF3KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwQ291bnQ6IGdldEZpZWxkKHQsICd1UF9DT1VOVCcsICdVUF9DT1VOVCcsICd1cENvdW50JykgPz8gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duVGltZTogdGhpcy5mb3JtYXREYXRlVGltZShkb3duVGltZVJhdyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duQ291bnQ6IGdldEZpZWxkKHQsICdkb3dOX0NPVU5UJywgJ0RPV05fQ09VTlQnLCAnZG93bkNvdW50JykgPz8gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VDb3VudDogdXNlQ291bnQgPz8gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VMaW1pdDogdXNlTGltaXQgPz8gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWZlUGVyY2VudDogcGVyY2VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmVXYXJuOiBmb3JtYXRQZXJjZW50KGxpZmVXYXJuTnVtKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5TdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2pOdW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwcGVkLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2UgPSBzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGAke3llYXJ9LSR7cy5yZXBsYWNlKC8tL2csICctJyl9OjAwYCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2UoYi51cFRpbWUpIC0gcGFyc2UoYS51cFRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xSZWNvcmRzID0gbWFwcGVkO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfojrflj5booajljZXmlbDmja7plJnor686JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKCfojrflj5bmlbDmja7lpLHotKXvvIzor7fmo4Dmn6XnvZHnu5zov57mjqUnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xSZWNvcmRzID0gW107XHJcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ0Zvcm0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGZvcm1hdERhdGVUaW1lKGRhdGVUaW1lU3RyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGVUaW1lU3RyKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBTdHJpbmcoZGF0ZVRpbWVTdHIpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoL15cXGR7MTB9JC8udGVzdChzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gbmV3IERhdGUoTnVtYmVyKHMpICogMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtkLmdldE1vbnRoKCkgKyAxfS0ke2QuZ2V0RGF0ZSgpfSAke2QuZ2V0SG91cnMoKX06JHtTdHJpbmcoZC5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKC9eXFxkezEzfSQvLnRlc3QocykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKE51bWJlcihzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtkLmdldE1vbnRoKCkgKyAxfS0ke2QuZ2V0RGF0ZSgpfSAke2QuZ2V0SG91cnMoKX06JHtTdHJpbmcoZC5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVUaW1lU3RyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZGF0ZS5nZXRNb250aCgpICsgMX0tJHtkYXRlLmdldERhdGUoKX0gJHtkYXRlLmdldEhvdXJzKCl9OiR7U3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCAnMCcpfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gU3RyaW5nKGRhdGVUaW1lU3RyKS5tYXRjaCgvKFxcZHsxLDR9Wy1cXC9dXFxkezEsMn1bLVxcL11cXGR7MSwyfSkuKj8oXFxkezEsMn06XFxkezJ9KS8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgcmV0dXJuIGAke21hdGNoWzFdLnJlcGxhY2UoLy0vZywgJy8nKS5yZXBsYWNlKC9eXFxkezR9XFwvLywgKG0pID0+IG0pfSAke21hdGNoWzJdfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhkYXRlVGltZVN0cik7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGRhdGVUaW1lU3RyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbW91bnRlZCgpIHtcclxuICAgICAgICAgICAgdGhpcy5tYWNoaW5lTm8gPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ21hY2hpbmVObycpIHx8ICcnO1xyXG4gICAgICAgICAgICB0aGlzLndvcmtPcmRlck5vID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdkYWEwMDEnKSB8fCAnJztcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1hY2hpbmVObyAmJiB0aGlzLndvcmtPcmRlck5vKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoRm9ybURhdGEoKS50aGVuKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZldGNoRGVmYXVsdFRvb2xGcm9tV29ya09yZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEluc3BlY3Rpb25SZWNvcmRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9vbFJlY29yZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRzZXQodGhpcy50b29sUmVjb3Jkc1swXSwgJ2N1cnJlbnRDak51bScsIHRoaXMud29ya09yZGVyQ3VycmVudENqTnVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybign5py65Y+w5Y+35oiW5bel5Y2V5Y+35Li656m677yM5peg5rOV6I635Y+W5pWw5o2uJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbiAgICAucGFnZSB7XHJcbiAgICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgZ2FwOiAxNnB4OyAvKiDkuKTkuKrooajmoLzkuYvpl7TnmoTpl7Tot50gKi9cclxuICAgIH1cclxuXHJcbiAgICAuYnV0dG9uLXJvdyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBtYXJnaW46IDJ2aCAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5zYXZlLWJ0biB7XHJcbiAgICAgICAgd2lkdGg6IDIwJTtcclxuICAgICAgICBwYWRkaW5nOiAxLjV2aDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBBMkU5O1xyXG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgfVxyXG5cclxuICAgICAgICAuc2F2ZS1idG46aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDBhOWZmO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnNhdmUtYnRuOmFjdGl2ZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwOTZkZDk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2F2ZS1idG46ZGlzYWJsZWQge1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XHJcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC8qIOihqOagvOWuueWZqOagt+W8jyAqL1xyXG4gICAgLnRhYmxlLXNlY3Rpb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjBmMGYwO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWJsZS1oZWFkZXIge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmYWZhZmE7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOGU4ZTg7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC50YWJsZS1oZWFkZXIgaDMge1xyXG4gICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgICAgICAgICAgY29sb3I6ICMzMzM7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5leHBhbmQtYnRuIHtcclxuICAgICAgICBwYWRkaW5nOiA4cHggMjBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTJjNDFhO1xyXG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XHJcbiAgICB9XHJcblxyXG4gICAgICAgIC5leHBhbmQtYnRuOmhvdmVyIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzczZDEzZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5leHBhbmQtYnRuOmFjdGl2ZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzODllMGQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC8qIOihqOagvOagt+W8jyAqL1xyXG4gICAgdGFibGUuc3R5bGVkLXRhYmxlIHtcclxuICAgICAgICBtYXgtd2lkdGg6IDE4MDBweDtcclxuICAgICAgICB3aWR0aDogOTh2dztcclxuICAgICAgICBtYXJnaW46IDAgYXV0bztcclxuICAgICAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xyXG4gICAgICAgIGJvcmRlci1zcGFjaW5nOiAwO1xyXG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNiZmJmYmY7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLDAsMCwwLjA2KTtcclxuICAgICAgICBtYXgtaGVpZ2h0OiAxODBweDsgLyog6LCD5pW06auY5bqm5L2/6aG16Z2i6aWx5ruhICovXHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xyXG4gICAgICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4zcyBlYXNlO1xyXG4gICAgfVxyXG5cclxuICAgICAgICB0YWJsZS5zdHlsZWQtdGFibGUuZXhwYW5kZWQge1xyXG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA0MDBweDsgLyog5bGV5byA5pe255qE6auY5bqmICovXHJcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0YWJsZS5zdHlsZWQtdGFibGUgdGhlYWQge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiB0YWJsZTtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGFibGUuc3R5bGVkLXRhYmxlIHRoZWFkIHRoIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmYWZhZmE7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2JmYmZiZjtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE2cHggMTBweDtcclxuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcclxuICAgICAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgICAgIHotaW5kZXg6IDEwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIHRhYmxlLnN0eWxlZC10YWJsZSB0Ym9keSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDE4MHB4IC0gNTBweCk7IC8qIOWHj+WOu+ihqOWktOmrmOW6piAqL1xyXG4gICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0YWJsZS5zdHlsZWQtdGFibGUuZXhwYW5kZWQgdGJvZHkge1xyXG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDQwMHB4IC0gNTBweCk7XHJcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0YWJsZS5zdHlsZWQtdGFibGUgdGJvZHkgdHIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiB0YWJsZTtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0YWJsZS5zdHlsZWQtdGFibGUgdGJvZHkgdGQge1xyXG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U4ZThlODtcclxuICAgICAgICAgICAgcGFkZGluZzogMTRweCAxMHB4O1xyXG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRhYmxlLnN0eWxlZC10YWJsZSB0Ym9keSAubGVmdCB7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAucm93LW9kZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLnJvdy1vZGQgKyB0ciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmYWZhZmE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC5udW0ge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XHJcbiAgICB9XHJcblxyXG4gICAgLndhcm4tY2VsbCB7XHJcbiAgICAgICAgY29sb3I6ICNkOTMwMjU7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgLm9rLWNlbGwge1xyXG4gICAgICAgIGNvbG9yOiAjMzMzO1xyXG4gICAgfVxyXG5cclxuICAgIC53YXJuLWJhZGdlIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmNGQ0ZjtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICBwYWRkaW5nOiAycHggNnB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuXHJcbiAgICAubW9yZS1yZWNvcmRzLXRpcCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGNvbG9yOiAjNjY2O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcclxuICAgICAgICBwYWRkaW5nOiAyMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcclxuICAgIH1cclxuXHJcbiAgICAgICAgLm1vcmUtcmVjb3Jkcy10aXAgc3BhbiB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgcGFkZGluZzogNXB4IDE1cHg7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkICNjY2M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC8qIOWTjeW6lOW8j+iwg+aVtCAqL1xyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xyXG4gICAgICAgIC5zYXZlLWJ0biB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAzMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudGFibGUtaGVhZGVyIHtcclxuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmV4cGFuZC1idG4ge1xyXG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbjwvc3R5bGU+Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///119\n");
/***/ }),
/* 120 */
@@ -10242,7 +10452,7 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 123));\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 127));\n//引入vuex插件 进行状态管理\n_vue.default.use(_vuex.default);\nvar store = new _vuex.default.Store({\n  state: {\n    id: 'id',\n    serverInfo: {\n      //服务信息\n      networkFlag: '内网',\n      serverURLInt: 'http://192.168.11.251:10054',\n      //服务器体检 10.0.1.104:10054\n      serverURL: 'http://localhost:10054',\n      //本地调试地址\n      //serverAPI:'http://78566b00.r1.cpolar.top/api',//外网地址\n      serverAPI: 'http://192.168.0.94:8008/api' //内网地址\n      //serverAPI:'http://localhost:5106/api',//本地调试地址\n    }\n  },\n\n  mutations: {\n    test: function test(state, id) {\n      state.id = id;\n    }\n  },\n  getters: {\n    currentColor: function currentColor(state) {\n      return state.colorList[state.colorIndex];\n    }\n  },\n  actions: {\n    // lazy loading openid\n  }\n});\nvar _default = store;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiXSwibmFtZXMiOlsiVnVlIiwidXNlIiwiVnVleCIsInN0b3JlIiwiU3RvcmUiLCJzdGF0ZSIsImlkIiwic2VydmVySW5mbyIsIm5ldHdvcmtGbGFnIiwic2VydmVyVVJMSW50Iiwic2VydmVyVVJMIiwic2VydmVyQVBJIiwibXV0YXRpb25zIiwidGVzdCIsImdldHRlcnMiLCJjdXJyZW50Q29sb3IiLCJjb2xvckxpc3QiLCJjb2xvckluZGV4IiwiYWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBQSxZQUFHLENBQUNDLEdBQUcsQ0FBQ0MsYUFBSSxDQUFDO0FBQ2IsSUFBTUMsS0FBSyxHQUFHLElBQUlELGFBQUksQ0FBQ0UsS0FBSyxDQUFDO0VBQzVCQyxLQUFLLEVBQUU7SUFDTkMsRUFBRSxFQUFFLElBQUk7SUFDUkMsVUFBVSxFQUFDO01BQUM7TUFDWEMsV0FBVyxFQUFDLElBQUk7TUFDaEJDLFlBQVksRUFBQyw2QkFBNkI7TUFBQztNQUMzQ0MsU0FBUyxFQUFDLHdCQUF3QjtNQUFDO01BQ25DO01BQ0FDLFNBQVMsRUFBQyw4QkFBOEIsQ0FBRTtNQUMxQztJQUNEO0VBQ0QsQ0FBQzs7RUFDREMsU0FBUyxFQUFFO0lBQ1ZDLElBQUksZ0JBQUNSLEtBQUssRUFBQ0MsRUFBRSxFQUFDO01BQ2JELEtBQUssQ0FBQ0MsRUFBRSxHQUFHQSxFQUFFO0lBQ2Q7RUFDRCxDQUFDO0VBQ0VRLE9BQU8sRUFBQztJQUNKQyxZQUFZLHdCQUFDVixLQUFLLEVBQUM7TUFDZixPQUFPQSxLQUFLLENBQUNXLFNBQVMsQ0FBQ1gsS0FBSyxDQUFDWSxVQUFVLENBQUM7SUFDNUM7RUFDSixDQUFDO0VBQ0pDLE9BQU8sRUFBRTtJQUNSO0VBQUE7QUFFRixDQUFDLENBQUM7QUFBQSxlQUVhZixLQUFLO0FBQUEiLCJmaWxlIjoiMTI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXHJcbmltcG9ydCBWdWV4IGZyb20gJ3Z1ZXgnXHJcblxyXG4vL+W8leWFpXZ1ZXjmj5Lku7Yg6L+b6KGM54q25oCB566h55CGXHJcblZ1ZS51c2UoVnVleCkgXHJcbmNvbnN0IHN0b3JlID0gbmV3IFZ1ZXguU3RvcmUoe1xyXG5cdHN0YXRlOiB7IFxyXG5cdFx0aWQ6ICdpZCcsXHJcblx0XHRzZXJ2ZXJJbmZvOnsvL+acjeWKoeS/oeaBr1xyXG5cdFx0XHRuZXR3b3JrRmxhZzon5YaF572RJywgXHJcblx0XHRcdHNlcnZlclVSTEludDonaHR0cDovLzE5Mi4xNjguMTEuMjUxOjEwMDU0JywvL+acjeWKoeWZqOS9k+ajgCAxMC4wLjEuMTA0OjEwMDU0XHJcblx0XHRcdHNlcnZlclVSTDonaHR0cDovL2xvY2FsaG9zdDoxMDA1NCcsLy/mnKzlnLDosIPor5XlnLDlnYBcclxuXHRcdFx0Ly9zZXJ2ZXJBUEk6J2h0dHA6Ly83ODU2NmIwMC5yMS5jcG9sYXIudG9wL2FwaScsLy/lpJbnvZHlnLDlnYBcclxuXHRcdFx0c2VydmVyQVBJOidodHRwOi8vMTkyLjE2OC4wLjk0OjgwMDgvYXBpJywgLy/lhoXnvZHlnLDlnYBcclxuXHRcdFx0Ly9zZXJ2ZXJBUEk6J2h0dHA6Ly9sb2NhbGhvc3Q6NTEwNi9hcGknLC8v5pys5Zyw6LCD6K+V5Zyw5Z2AXHJcblx0XHR9XHJcblx0fSxcclxuXHRtdXRhdGlvbnM6IHtcclxuXHRcdHRlc3Qoc3RhdGUsaWQpe1xyXG5cdFx0XHRzdGF0ZS5pZCA9IGlkO1xyXG5cdFx0fVxyXG5cdH0sXHJcbiAgICBnZXR0ZXJzOntcclxuICAgICAgICBjdXJyZW50Q29sb3Ioc3RhdGUpe1xyXG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuY29sb3JMaXN0W3N0YXRlLmNvbG9ySW5kZXhdXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHRhY3Rpb25zOiB7XHJcblx0XHQvLyBsYXp5IGxvYWRpbmcgb3BlbmlkXHJcblx0fVxyXG59KVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgc3RvcmVcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///126\n");
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 123));\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 127));\n//引入vuex插件 进行状态管理\n_vue.default.use(_vuex.default);\nvar store = new _vuex.default.Store({\n  state: {\n    id: 'id',\n    serverInfo: {\n      //服务信息\n      networkFlag: '内网',\n      serverURLInt: 'http://192.168.11.251:10054',\n      //服务器体检 10.0.1.104:10054\n      serverURL: 'http://localhost:5106',\n      //本地调试地址\n      //serverAPI:'http://78566b00.r1.cpolar.top/api',//外网地址\n      //serverAPI:'http://192.168.0.94:8008/api', //内网地址\n      serverAPI: 'http://localhost:5106/api' //本地调试地址\n    }\n  },\n\n  mutations: {\n    test: function test(state, id) {\n      state.id = id;\n    }\n  },\n  getters: {\n    currentColor: function currentColor(state) {\n      return state.colorList[state.colorIndex];\n    }\n  },\n  actions: {\n    // lazy loading openid\n  }\n});\nvar _default = store;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiXSwibmFtZXMiOlsiVnVlIiwidXNlIiwiVnVleCIsInN0b3JlIiwiU3RvcmUiLCJzdGF0ZSIsImlkIiwic2VydmVySW5mbyIsIm5ldHdvcmtGbGFnIiwic2VydmVyVVJMSW50Iiwic2VydmVyVVJMIiwic2VydmVyQVBJIiwibXV0YXRpb25zIiwidGVzdCIsImdldHRlcnMiLCJjdXJyZW50Q29sb3IiLCJjb2xvckxpc3QiLCJjb2xvckluZGV4IiwiYWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBQSxZQUFHLENBQUNDLEdBQUcsQ0FBQ0MsYUFBSSxDQUFDO0FBQ2IsSUFBTUMsS0FBSyxHQUFHLElBQUlELGFBQUksQ0FBQ0UsS0FBSyxDQUFDO0VBQzVCQyxLQUFLLEVBQUU7SUFDTkMsRUFBRSxFQUFFLElBQUk7SUFDUkMsVUFBVSxFQUFDO01BQUM7TUFDWEMsV0FBVyxFQUFDLElBQUk7TUFDaEJDLFlBQVksRUFBQyw2QkFBNkI7TUFBQztNQUMzQ0MsU0FBUyxFQUFDLHVCQUF1QjtNQUFDO01BQ2xDO01BQ0E7TUFDQUMsU0FBUyxFQUFDLDJCQUEyQixDQUFDO0lBQ3ZDO0VBQ0QsQ0FBQzs7RUFDREMsU0FBUyxFQUFFO0lBQ1ZDLElBQUksZ0JBQUNSLEtBQUssRUFBQ0MsRUFBRSxFQUFDO01BQ2JELEtBQUssQ0FBQ0MsRUFBRSxHQUFHQSxFQUFFO0lBQ2Q7RUFDRCxDQUFDO0VBQ0VRLE9BQU8sRUFBQztJQUNKQyxZQUFZLHdCQUFDVixLQUFLLEVBQUM7TUFDZixPQUFPQSxLQUFLLENBQUNXLFNBQVMsQ0FBQ1gsS0FBSyxDQUFDWSxVQUFVLENBQUM7SUFDNUM7RUFDSixDQUFDO0VBQ0pDLE9BQU8sRUFBRTtJQUNSO0VBQUE7QUFFRixDQUFDLENBQUM7QUFBQSxlQUVhZixLQUFLO0FBQUEiLCJmaWxlIjoiMTI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXHJcbmltcG9ydCBWdWV4IGZyb20gJ3Z1ZXgnXHJcblxyXG4vL+W8leWFpXZ1ZXjmj5Lku7Yg6L+b6KGM54q25oCB566h55CGXHJcblZ1ZS51c2UoVnVleCkgXHJcbmNvbnN0IHN0b3JlID0gbmV3IFZ1ZXguU3RvcmUoe1xyXG5cdHN0YXRlOiB7IFxyXG5cdFx0aWQ6ICdpZCcsXHJcblx0XHRzZXJ2ZXJJbmZvOnsvL+acjeWKoeS/oeaBr1xyXG5cdFx0XHRuZXR3b3JrRmxhZzon5YaF572RJywgXHJcblx0XHRcdHNlcnZlclVSTEludDonaHR0cDovLzE5Mi4xNjguMTEuMjUxOjEwMDU0JywvL+acjeWKoeWZqOS9k+ajgCAxMC4wLjEuMTA0OjEwMDU0XHJcblx0XHRcdHNlcnZlclVSTDonaHR0cDovL2xvY2FsaG9zdDo1MTA2JywvL+acrOWcsOiwg+ivleWcsOWdgFxyXG5cdFx0XHQvL3NlcnZlckFQSTonaHR0cDovLzc4NTY2YjAwLnIxLmNwb2xhci50b3AvYXBpJywvL+Wklue9keWcsOWdgFxyXG5cdFx0XHQvL3NlcnZlckFQSTonaHR0cDovLzE5Mi4xNjguMC45NDo4MDA4L2FwaScsIC8v5YaF572R5Zyw5Z2AXHJcblx0XHRcdHNlcnZlckFQSTonaHR0cDovL2xvY2FsaG9zdDo1MTA2L2FwaScsLy/mnKzlnLDosIPor5XlnLDlnYBcclxuXHRcdH1cclxuXHR9LFxyXG5cdG11dGF0aW9uczoge1xyXG5cdFx0dGVzdChzdGF0ZSxpZCl7XHJcblx0XHRcdHN0YXRlLmlkID0gaWQ7XHJcblx0XHR9XHJcblx0fSxcclxuICAgIGdldHRlcnM6e1xyXG4gICAgICAgIGN1cnJlbnRDb2xvcihzdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2xvckxpc3Rbc3RhdGUuY29sb3JJbmRleF1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cdGFjdGlvbnM6IHtcclxuXHRcdC8vIGxhenkgbG9hZGluZyBvcGVuaWRcclxuXHR9XHJcbn0pXHJcblxyXG5leHBvcnQgZGVmYXVsdCBzdG9yZVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///126\n");
/***/ }),
/* 127 */