1/******/ (function() { // webpackBootstrap 2/******/ var __webpack_modules__ = ({ 3
vendor: 1,957 bytes, lines 4-59
4/***/ "./node_modules/@sygnas/jp-social-share/dist/es6/_virtual/_rollupPluginBabelHelpers.js": 5/*!*********************************************************************************************!*\ 6 !*** ./node_modules/@sygnas/jp-social-share/dist/es6/_virtual/_rollupPluginBabelHelpers.js ***! 7 \*********************************************************************************************/ 8/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 9 10"use strict"; 11__webpack_require__.r(__webpack_exports__); 12/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13/* harmony export */ "classCallCheck": function() { return /* binding */ _classCallCheck; }, 14/* harmony export */ "createClass": function() { return /* binding */ _createClass; }, 15/* harmony export */ "defineProperty": function() { return /* binding */ _defineProperty; } 16/* harmony export */ }); 17function _classCallCheck(instance, Constructor) { 18 if (!(instance instanceof Constructor)) { 19 throw new TypeError("Cannot call a class as a function"); 20 } 21} 22 23function _defineProperties(target, props) { 24 for (var i = 0; i < props.length; i++) { 25 var descriptor = props[i]; 26 descriptor.enumerable = descriptor.enumerable || false; 27 descriptor.configurable = true; 28 if ("value" in descriptor) descriptor.writable = true; 29 Object.defineProperty(target, descriptor.key, descriptor); 30 } 31} 32 33function _createClass(Constructor, protoProps, staticProps) { 34 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 35 if (staticProps) _defineProperties(Constructor, staticProps); 36 return Constructor; 37} 38 39function _defineProperty(obj, key, value) { 40 if (key in obj) { 41 Object.defineProperty(obj, key, { 42 value: value, 43 enumerable: true, 44 configurable: true, 45 writable: true 46 }); 47 } else { 48 obj[key] = value; 49 } 50 51 return obj; 52} 53 54 55//# sourceMappingURL=_rollupPluginBabelHelpers.js.map 56 57 58/***/ }), 59
vendor: 8,258 bytes, lines 60-274
60/***/ "./node_modules/@sygnas/jp-social-share/dist/es6/index.js": 61/*!****************************************************************!*\ 62 !*** ./node_modules/@sygnas/jp-social-share/dist/es6/index.js ***! 63 \****************************************************************/ 64/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 65 66"use strict"; 67__webpack_require__.r(__webpack_exports__); 68/* harmony export */ __webpack_require__.d(__webpack_exports__, { 69/* harmony export */ "default": function() { return /* binding */ JpSocialShare; } 70/* harmony export */ }); 71/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_virtual/_rollupPluginBabelHelpers.js */ "./node_modules/@sygnas/jp-social-share/dist/es6/_virtual/_rollupPluginBabelHelpers.js"); 72 73 74/** 75 * æ¥æ¬åãã½ã¼ã·ã£ã«ã·ã§ã¢ãã¿ã³ 76 * 77 * @author Hiroshi Fukuda <[email protected]> 78 * @license MIT 79 */ 80var JpSocialShare = /*#__PURE__*/function () { 81 function JpSocialShare() { 82 (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.classCallCheck)(this, JpSocialShare); 83 } 84 85 (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.createClass)(JpSocialShare, null, [{ 86 key: "setShareButton", 87 value: // ãµã¼ãã¹åèå¥å 88 //////////////////////// 89 //////////////////////// 90 91 /** 92 * ã·ã§ã¢ãã¿ã³ã®ãªã³ã¯ãè¨å®ãã 93 * @param {String} target 対象ãã¿ã³ã®ã»ã¬ã¯ã¿ 94 * @param {Object} option æ°è¦ã¦ã£ã³ãã¦ã®ãã©ã¡ã¼ã¿ï¼defaultsåç §ï¼ 95 */ 96 function setShareButton(target) { 97 var _this = this; 98 99 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 100 // è¨å®ã®ãã¼ã¸ 101 this.opt = Object.assign(this.defaults, option); // ã¯ãªãã¯ã¤ãã³ããè¨å® 102 103 this.getNodeArray(document.querySelectorAll(target)).forEach(function (elm) { 104 elm.addEventListener('click', function (ev) { 105 var elm = ev.currentTarget; 106 107 _this.openShareWindowWithElement(elm); 108 109 ev.preventDefault(); 110 }); 111 }); 112 } 113 /** 114 * ã¨ã¬ã¡ã³ãããæ å ±ãåå¾ãã¦ã·ã§ã¢ç¨ã¦ã£ã³ãã¦ãéã 115 */ 116 117 }, { 118 key: "openShareWindowWithElement", 119 value: function openShareWindowWithElement(elm) { 120 // ã¨ã¬ã¡ã³ããããã©ã¡ã¼ã¿ãåå¾ 121 var service = elm.getAttribute('data-share-service'); 122 var url = elm.getAttribute('data-share-url') || ''; 123 var message = elm.getAttribute('data-share-message') || document.title; 124 var account = elm.getAttribute('data-share-account') || ''; 125 var follow = elm.getAttribute('data-share-follow') || ''; // ã·ã§ã¢ç¨ã¦ã£ã³ãã¦ãéã 126 127 this.openShareWindow(service, url, message, account, follow); 128 } 129 /** 130 * ã·ã§ã¢ç¨ã¦ã£ã³ãã¦ãéã 131 * @param service {String} ã½ã¼ã·ã£ã«ãµã¼ãã¹èå¥å 132 * @param url {String} ã·ã§ã¢URL 133 * @param message {String} ã¡ãã»ã¼ã¸æ¬æ 134 * @param account {String} ãã¤ã¼ãã«ä»ããRepleyã¢ã«ã¦ã³ã 135 * @param follow {String} ãã¤ã¼ãå¾ã«è¡¨ç¤ºãããã©ãã¼åè£ã¢ã«ã¦ã³ã 136 */ 137 138 }, { 139 key: "openShareWindow", 140 value: function openShareWindow(service) { 141 var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; 142 var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; 143 var account = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ''; 144 var follow = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : ''; 145 146 // åå¨ããªããµã¼ãã¹ã ã£ããã¨ã©ã¼ 147 if (this.opt.services && Object.keys(this.opt.services).indexOf(service) === -1) { 148 console.log("".concat(service, " is not supported.")); 149 return; 150 } // ãã³ãã¬ã¼ãããã³ã³ãã¼ã 151 152 153 var openUrl = this.convertOpenUrl(service, url, message, account, follow); // // LINEã¯ã¢ããªã«é£ã°ãããã以å¤ã¯ã¦ã£ã³ãã¦ãéã 154 // if (service === this.SERVICES.LINE) { 155 // window.location.href = openUrl; 156 // } else if (this.opt.window) { 157 158 if (this.opt.window) { 159 var windowOption = this.getWindowOption(this.opt.window); 160 window.open(openUrl, "share_".concat(service), windowOption); 161 } else { 162 console.log('Window option is not defined.'); 163 return; 164 } 165 } //////////////////////// 166 //////////////////////// 167 168 /** 169 * ãµã¼ãã¹æ¯ã®URLãåå¾ 170 * ãã©ã¡ã¼ã¿ã«ãã£ã¦ã¯å å·¥ãããã 171 * @param service {String} ã½ã¼ã·ã£ã«ãµã¼ãã¹èå¥å 172 * @param url {String} ã·ã§ã¢URL 173 * @param message {String} ã¡ãã»ã¼ã¸æ¬æ 174 * @param account {String} ãã¤ã¼ãã«ä»ããRepleyã¢ã«ã¦ã³ã 175 * @param follow {String} ãã¤ã¼ãå¾ã«è¡¨ç¤ºãããã©ãã¼åè£ã¢ã«ã¦ã³ã 176 * @return {String} ã·ã§ã¢çªãªã¼ãã³URL 177 */ 178 179 }, { 180 key: "convertOpenUrl", 181 value: function convertOpenUrl(service) { 182 var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; 183 var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; 184 var account = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ''; 185 var follow = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : ''; 186 var eu = encodeURIComponent; 187 var shareUrl = url || location.href; 188 var openUrl = this.opt.services ? this.opt.services[service] : ""; 189 190 if (!openUrl) { 191 console.log("".concat(service, " is not supported.")); 192 return ""; 193 } // Twitterã ããã©ã¡ã¼ã¿ã®å 容ã«ãã£ã¦URLãå¤ãã 194 195 196 if (service === this.SERVICES.TWITTER) { 197 if (!account) openUrl = openUrl.replace("&via={{ACCOUNT}}", ""); 198 if (!follow) openUrl = openUrl.replace("&related={{FOLLOW}}", ""); 199 } 200 201 openUrl = openUrl.replace("{{ACCOUNT}}", eu(account)); 202 openUrl = openUrl.replace("{{FOLLOW}}", eu(follow)); 203 openUrl = openUrl.replace("{{MESSAGE}}", eu(message)); 204 openUrl = openUrl.replace("{{URL}}", eu(shareUrl)); 205 return openUrl; 206 } 207 /** 208 * NodeListãArrayã¨ãã¦åãåºãï¼IE対çï¼ 209 */ 210 211 }, { 212 key: "getNodeArray", 213 value: function getNodeArray(nodeList) { 214 return Array.prototype.slice.call(nodeList, 0); 215 } 216 /** 217 * Windowãã©ã¡ã¼ã¿ä½æ 218 * @param opt {Object} ã¦ã£ã³ãã¦ãã©ã¡ã¼ã¿ 219 * @return {String} æ°è¦ã¦ã£ã³ãã¦ã®ãã©ã¡ã¼ã¿æåå 220 */ 221 222 }, { 223 key: "getWindowOption", 224 value: function getWindowOption(opt) { 225 var items = []; 226 Object.keys(opt).forEach(function (key) { 227 items.push("".concat(key, "=").concat(opt[key])); 228 }); 229 return items.join(","); 230 } 231 }]); 232 233 return JpSocialShare; 234}(); 235 236(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.defineProperty)(JpSocialShare, "SERVICES", { 237 TWITTER: 'twitter', 238 FACEBOOK: 'facebook', 239 LINE: 'line', 240 FEEDLY: 'feedly', 241 POCKET: 'pocket', 242 HATEBU: 'hatebu' 243}); 244 245(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.defineProperty)(JpSocialShare, "opt", void 0); 246 247(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.defineProperty)(JpSocialShare, "defaults", { 248 // window.open() ã®ãªãã·ã§ã³ 249 window: { 250 width: 550, 251 height: 450, 252 personalbar: 0, 253 toolbar: 0, 254 scrollbars: 1, 255 resizable: 1 256 }, 257 // ã·ã§ã¢ç¨URLã®ãã³ãã¬ã¼ã 258 services: { 259 twitter: 'http://twitter.com/share?url={{URL}}&text={{MESSAGE}}&via={{ACCOUNT}}&related={{FOLLOW}}', 260 facebook: 'http://www.facebook.com/share.php?u={{URL}}', 261 // line: 'line://msg/text/{{MESSAGE}} {{URL}}', 262 line: 'https://social-plugins.line.me/lineit/share?url={{URL}}', 263 feedly: 'http://feedly.com/i/subscription/feed/{{URL}}', 264 pocket: 'http://getpocket.com/edit?url={{URL}}', 265 hatebu: '//b.hatena.ne.jp/add?mode=confirm&url={{URL}}&title={{MESSAGE}}' 266 } 267}); 268 269 270//# sourceMappingURL=index.js.map 271 272 273/***/ }), 274
vendor: 19,823 bytes, lines 275-933
275/***/ "./node_modules/@sygnas/scroll-amount/dist/scroll-amount.es.js": 276/*!*********************************************************************!*\ 277 !*** ./node_modules/@sygnas/scroll-amount/dist/scroll-amount.es.js ***! 278 \*********************************************************************/ 279/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 280 281"use strict"; 282__webpack_require__.r(__webpack_exports__); 283/* harmony import */ var _sygnas_throttle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sygnas/throttle */ "./node_modules/@sygnas/throttle/dist/throttle.es.js"); 284 285 286function unwrapExports (x) { 287 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; 288} 289 290function createCommonjsModule(fn, module) { 291 return module = { exports: {} }, fn(module, module.exports), module.exports; 292} 293 294var _global = createCommonjsModule(function (module) { 295// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 296var global = module.exports = typeof window != 'undefined' && window.Math == Math 297 ? window : typeof self != 'undefined' && self.Math == Math ? self 298 // eslint-disable-next-line no-new-func 299 : Function('return this')(); 300if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef 301}); 302 303var _core = createCommonjsModule(function (module) { 304var core = module.exports = { version: '2.5.3' }; 305if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef 306}); 307 308var _core_1 = _core.version; 309 310var _aFunction = function (it) { 311 if (typeof it != 'function') throw TypeError(it + ' is not a function!'); 312 return it; 313}; 314 315// optional / simple context binding 316 317var _ctx = function (fn, that, length) { 318 _aFunction(fn); 319 if (that === undefined) return fn; 320 switch (length) { 321 case 1: return function (a) { 322 return fn.call(that, a); 323 }; 324 case 2: return function (a, b) { 325 return fn.call(that, a, b); 326 }; 327 case 3: return function (a, b, c) { 328 return fn.call(that, a, b, c); 329 }; 330 } 331 return function (/* ...args */) { 332 return fn.apply(that, arguments); 333 }; 334}; 335 336var _isObject = function (it) { 337 return typeof it === 'object' ? it !== null : typeof it === 'function'; 338}; 339 340var _anObject = function (it) { 341 if (!_isObject(it)) throw TypeError(it + ' is not an object!'); 342 return it; 343}; 344 345var _fails = function (exec) { 346 try { 347 return !!exec(); 348 } catch (e) { 349 return true; 350 } 351}; 352 353// Thank's IE8 for his funny defineProperty 354var _descriptors = !_fails(function () { 355 return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; 356}); 357 358var document$1 = _global.document; 359// typeof document.createElement is 'object' in old IE 360var is = _isObject(document$1) && _isObject(document$1.createElement); 361var _domCreate = function (it) { 362 return is ? document$1.createElement(it) : {}; 363}; 364 365var _ie8DomDefine = !_descriptors && !_fails(function () { 366 return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7; 367}); 368 369// 7.1.1 ToPrimitive(input [, PreferredType]) 370 371// instead of the ES6 spec version, we didn't implement @@toPrimitive case 372// and the second argument - flag - preferred type is a string 373var _toPrimitive = function (it, S) { 374 if (!_isObject(it)) return it; 375 var fn, val; 376 if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; 377 if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) return val; 378 if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; 379 throw TypeError("Can't convert object to primitive value"); 380}; 381 382var dP = Object.defineProperty; 383 384var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) { 385 _anObject(O); 386 P = _toPrimitive(P, true); 387 _anObject(Attributes); 388 if (_ie8DomDefine) try { 389 return dP(O, P, Attributes); 390 } catch (e) { /* empty */ } 391 if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); 392 if ('value' in Attributes) O[P] = Attributes.value; 393 return O; 394}; 395 396var _objectDp = { 397 f: f 398}; 399 400var _propertyDesc = function (bitmap, value) { 401 return { 402 enumerable: !(bitmap & 1), 403 configurable: !(bitmap & 2), 404 writable: !(bitmap & 4), 405 value: value 406 }; 407}; 408 409var _hide = _descriptors ? function (object, key, value) { 410 return _objectDp.f(object, key, _propertyDesc(1, value)); 411} : function (object, key, value) { 412 object[key] = value; 413 return object; 414}; 415 416var PROTOTYPE = 'prototype'; 417 418var $export = function (type, name, source) { 419 var IS_FORCED = type & $export.F; 420 var IS_GLOBAL = type & $export.G; 421 var IS_STATIC = type & $export.S; 422 var IS_PROTO = type & $export.P; 423 var IS_BIND = type & $export.B; 424 var IS_WRAP = type & $export.W; 425 var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {}); 426 var expProto = exports[PROTOTYPE]; 427 var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] : (_global[name] || {})[PROTOTYPE]; 428 var key, own, out; 429 if (IS_GLOBAL) source = name; 430 for (key in source) { 431 // contains in native 432 own = !IS_FORCED && target && target[key] !== undefined; 433 if (own && key in exports) continue; 434 // export native or passed 435 out = own ? target[key] : source[key]; 436 // prevent global pollution for namespaces 437 exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] 438 // bind timers to global for call from export context 439 : IS_BIND && own ? _ctx(out, _global) 440 // wrap global constructors for prevent change them in library 441 : IS_WRAP && target[key] == out ? (function (C) { 442 var F = function (a, b, c) { 443 if (this instanceof C) { 444 switch (arguments.length) { 445 case 0: return new C(); 446 case 1: return new C(a); 447 case 2: return new C(a, b); 448 } return new C(a, b, c); 449 } return C.apply(this, arguments); 450 }; 451 F[PROTOTYPE] = C[PROTOTYPE]; 452 return F; 453 // make static versions for prototype methods 454 })(out) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out; 455 // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% 456 if (IS_PROTO) { 457 (exports.virtual || (exports.virtual = {}))[key] = out; 458 // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% 459 if (type & $export.R && expProto && !expProto[key]) _hide(expProto, key, out); 460 } 461 } 462}; 463// type bitmap 464$export.F = 1; // forced 465$export.G = 2; // global 466$export.S = 4; // static 467$export.P = 8; // proto 468$export.B = 16; // bind 469$export.W = 32; // wrap 470$export.U = 64; // safe 471$export.R = 128; // real proto method for `library` 472var _export = $export; 473 474var hasOwnProperty = {}.hasOwnProperty; 475var _has = function (it, key) { 476 return hasOwnProperty.call(it, key); 477}; 478 479var toString = {}.toString; 480 481var _cof = function (it) { 482 return toString.call(it).slice(8, -1); 483}; 484 485// fallback for non-array-like ES3 and non-enumerable old V8 strings 486 487// eslint-disable-next-line no-prototype-builtins 488var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { 489 return _cof(it) == 'String' ? it.split('') : Object(it); 490}; 491 492// 7.2.1 RequireObjectCoercible(argument) 493var _defined = function (it) { 494 if (it == undefined) throw TypeError("Can't call method on " + it); 495 return it; 496}; 497 498// to indexed object, toObject with fallback for non-array-like ES3 strings 499 500 501var _toIobject = function (it) { 502 return _iobject(_defined(it)); 503}; 504 505// 7.1.4 ToInteger 506var ceil = Math.ceil; 507var floor = Math.floor; 508var _toInteger = function (it) { 509 return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); 510}; 511 512// 7.1.15 ToLength 513 514var min = Math.min; 515var _toLength = function (it) { 516 return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 517}; 518 519var max = Math.max; 520var min$1 = Math.min; 521var _toAbsoluteIndex = function (index, length) { 522 index = _toInteger(index); 523 return index < 0 ? max(index + length, 0) : min$1(index, length); 524}; 525 526// false -> Array#indexOf 527// true -> Array#includes 528 529 530 531var _arrayIncludes = function (IS_INCLUDES) { 532 return function ($this, el, fromIndex) { 533 var O = _toIobject($this); 534 var length = _toLength(O.length); 535 var index = _toAbsoluteIndex(fromIndex, length); 536 var value; 537 // Array#includes uses SameValueZero equality algorithm 538 // eslint-disable-next-line no-self-compare 539 if (IS_INCLUDES && el != el) while (length > index) { 540 value = O[index++]; 541 // eslint-disable-next-line no-self-compare 542 if (value != value) return true; 543 // Array#indexOf ignores holes, Array#includes - not 544 } else for (;length > index; index++) if (IS_INCLUDES || index in O) { 545 if (O[index] === el) return IS_INCLUDES || index || 0; 546 } return !IS_INCLUDES && -1; 547 }; 548}; 549 550var SHARED = '__core-js_shared__'; 551var store = _global[SHARED] || (_global[SHARED] = {}); 552var _shared = function (key) { 553 return store[key] || (store[key] = {}); 554}; 555 556var id = 0; 557var px = Math.random(); 558var _uid = function (key) { 559 return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); 560}; 561 562var shared = _shared('keys'); 563 564var _sharedKey = function (key) { 565 return shared[key] || (shared[key] = _uid(key)); 566}; 567 568var arrayIndexOf = _arrayIncludes(false); 569var IE_PROTO = _sharedKey('IE_PROTO'); 570 571var _objectKeysInternal = function (object, names) { 572 var O = _toIobject(object); 573 var i = 0; 574 var result = []; 575 var key; 576 for (key in O) if (key != IE_PROTO) _has(O, key) && result.push(key); 577 // Don't enum bug & hidden keys 578 while (names.length > i) if (_has(O, key = names[i++])) { 579 ~arrayIndexOf(result, key) || result.push(key); 580 } 581 return result; 582}; 583 584// IE 8- don't enum bug keys 585var _enumBugKeys = ( 586 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' 587).split(','); 588 589// 19.1.2.14 / 15.2.3.14 Object.keys(O) 590 591 592 593var _objectKeys = Object.keys || function keys(O) { 594 return _objectKeysInternal(O, _enumBugKeys); 595}; 596 597var f$1 = Object.getOwnPropertySymbols; 598 599var _objectGops = { 600 f: f$1 601}; 602 603var f$2 = {}.propertyIsEnumerable; 604 605var _objectPie = { 606 f: f$2 607}; 608 609// 7.1.13 ToObject(argument) 610 611var _toObject = function (it) { 612 return Object(_defined(it)); 613}; 614 615// 19.1.2.1 Object.assign(target, source, ...) 616 617 618 619 620 621var $assign = Object.assign; 622 623// should work with symbols and should have deterministic property order (V8 bug) 624var _objectAssign = !$assign || _fails(function () { 625 var A = {}; 626 var B = {}; 627 // eslint-disable-next-line no-undef 628 var S = Symbol(); 629 var K = 'abcdefghijklmnopqrst'; 630 A[S] = 7; 631 K.split('').forEach(function (k) { B[k] = k; }); 632 return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; 633}) ? function assign(target, source) { // eslint-disable-line no-unused-vars 634 var T = _toObject(target); 635 var aLen = arguments.length; 636 var index = 1; 637 var getSymbols = _objectGops.f; 638 var isEnum = _objectPie.f; 639 while (aLen > index) { 640 var S = _iobject(arguments[index++]); 641 var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S); 642 var length = keys.length; 643 var j = 0; 644 var key; 645 while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key]; 646 } return T; 647} : $assign; 648 649// 19.1.3.1 Object.assign(target, source) 650 651 652_export(_export.S + _export.F, 'Object', { assign: _objectAssign }); 653 654var assign = _core.Object.assign; 655 656var assign$2 = createCommonjsModule(function (module) { 657module.exports = { "default": assign, __esModule: true }; 658}); 659 660var _Object$assign = unwrapExports(assign$2); 661 662var classCallCheck = createCommonjsModule(function (module, exports) { 663exports.__esModule = true; 664 665exports.default = function (instance, Constructor) { 666 if (!(instance instanceof Constructor)) { 667 throw new TypeError("Cannot call a class as a function"); 668 } 669}; 670}); 671 672var _classCallCheck = unwrapExports(classCallCheck); 673 674// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) 675_export(_export.S + _export.F * !_descriptors, 'Object', { defineProperty: _objectDp.f }); 676 677var $Object = _core.Object; 678var defineProperty = function defineProperty(it, key, desc) { 679 return $Object.defineProperty(it, key, desc); 680}; 681 682var defineProperty$2 = createCommonjsModule(function (module) { 683module.exports = { "default": defineProperty, __esModule: true }; 684}); 685 686unwrapExports(defineProperty$2); 687 688var createClass = createCommonjsModule(function (module, exports) { 689exports.__esModule = true; 690 691 692 693var _defineProperty2 = _interopRequireDefault(defineProperty$2); 694 695function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 696 697exports.default = function () { 698 function defineProperties(target, props) { 699 for (var i = 0; i < props.length; i++) { 700 var descriptor = props[i]; 701 descriptor.enumerable = descriptor.enumerable || false; 702 descriptor.configurable = true; 703 if ("value" in descriptor) descriptor.writable = true; 704 (0, _defineProperty2.default)(target, descriptor.key, descriptor); 705 } 706 } 707 708 return function (Constructor, protoProps, staticProps) { 709 if (protoProps) defineProperties(Constructor.prototype, protoProps); 710 if (staticProps) defineProperties(Constructor, staticProps); 711 return Constructor; 712 }; 713}(); 714}); 715 716var _createClass = unwrapExports(createClass); 717 718/** 719 * Add scrolling state(top / not-top / bottom / not-bottom) 720 * 721 * @author Hiroshi Fukuda <[email protected]> 722 * @license MIT 723 */ 724 725var ATTR_NAME = 'data-scroll-amount'; 726var ATTR_TOP = 'top'; 727var ATTR_BOTTOM = 'bottom'; 728var ATTR_NOT_TOP = 'not-top'; 729var ATTR_NOT_BOTTOM = 'not-bottom'; 730 731var _class = function () { 732 733 /** 734 * ã³ã³ã¹ãã©ã¯ã¿ 735 * @param {string} target DOM Selector 736 * @param {object} options 737 */ 738 function _class(target) { 739 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 740 741 _classCallCheck(this, _class); 742 743 var defaults = { 744 // æä¸é¨ã®ãªãã»ãã 745 offset_top: 70, 746 // æä¸é¨ã®ãªãã»ãã 747 offset_bottom: 70, 748 // æä¸é¨ã«ã¹ã¯ãã¼ã«ããæã«å®è¡ 749 onTop: function onTop() {}, 750 751 // æä¸é¨ããé¢ããæã«å®è¡ 752 onNotTop: function onNotTop() {}, 753 754 // æä¸é¨ã«ã¹ã¯ãã¼ã«ããæã«å®è¡ 755 onBottom: function onBottom() {}, 756 757 // æä¸é¨ããé¢ããæã«å®è¡ 758 onNotBottom: function onNotBottom() {}, 759 760 // ç¹å®ã¨ã¬ã¡ã³ãã®ã¹ã¯ãã¼ã«ã対象ã«ããã 761 element: '' 762 }; 763 764 this.opt = _Object$assign(defaults, options); 765 this.target = document.querySelectorAll(target); 766 this.win_height = null; // ãã©ã¦ã¶ã¦ã£ã³ãã¦ã®é«ã 767 this.interval_id = null; // ã¹ã¯ãã¼ã«ã¤ãã³ãã®ã¤ã³ã¿ã¼ãã«ãã§ã㯠768 this.results = []; // data屿§ã«æ¸ãåºãå 容 769 this.last_results_str = null; 770 this.is_started = false; // éå§ãã 771 this.is_top = false; // ä¸çªä¸ã«ã¹ã¯ãã¼ã«ãã 772 this.is_bottom = false; // ä¸çªä¸ã«ã¹ã¯ãã¼ã«ãã 773 // ã¹ã¯ãã¼ã«éã調ã¹ãã¨ã¬ã¡ã³ã 774 this.element = this.opt.element ? document.querySelector(this.opt.element) : null; 775 776 this.ev_resize = null; 777 this.ev_scroll = null; 778 779 // éå§ 780 this.start(); 781 } 782 783 /** ******************* 784 * public 785 */ 786 787 /** 788 * ã¹ã¯ãã¼ã«æ¤ç¥å¦çãéå§ 789 */ 790 791 792 _createClass(_class, [{ 793 key: 'start', 794 value: function start() { 795 var _this = this; 796 797 // ãã§ã«éå§ãã¦ãããç¡è¦ 798 if (this.is_started) return; 799 800 // ã¤ãã³ããªãã¸ã§ã¯ã 801 this.ev_resize = (0,_sygnas_throttle__WEBPACK_IMPORTED_MODULE_0__["default"])(50, this._resize, this); 802 this.ev_scroll = (0,_sygnas_throttle__WEBPACK_IMPORTED_MODULE_0__["default"])(100, this._scroll, this); 803 804 // ãªãµã¤ãºã¤ãã³ãã§ããã¥ã¡ã³ãé«ããã§ã㯠805 this._resize(); 806 window.addEventListener('resize', this.ev_resize); 807 808 // ã¹ã¯ãã¼ã«ã¤ãã³ã 809 this._scroll(); 810 this.is_started = true; 811 window.addEventListener('scroll', this.ev_scroll); 812 813 // 0.5ç§éæ¯ã«ãã§ãã¯ãå ¥ãã 814 this.interval_id = setInterval(function () { 815 _this._scroll(); 816 }, 500); 817 } 818 819 /** 820 * ã¹ã¯ãã¼ã«æ¤ç¥å¦çã忢 821 */ 822 823 }, { 824 key: 'stop', 825 value: function stop() { 826 window.removeEventListener('resize', this.ev_resize); 827 window.removeEventListener('scroll', this.ev_scroll); 828 clearInterval(this.interval_id); 829 } 830 831 /** ******************* 832 * private 833 */ 834 835 /** 836 * ã¹ã¯ãã¼ã«å¦ç 837 */ 838 839 }, { 840 key: '_scroll', 841 value: function _scroll() { 842 var scroll_top = this.element ? this.element.scrollTop : window.pageYOffset; 843 844 // åæå 845 this.results = []; 846 847 // ä½ç½®ã¤ãã³ãã®ãã§ã㯠848 this._check_top_and_bottom(scroll_top); 849 850 // 屿§ãä»ä¸ 851 this._set_attribute(); 852 } 853 854 /** 855 * 屿§ãä»ä¸ 856 */ 857 858 }, { 859 key: '_set_attribute', 860 value: function _set_attribute() { 861 var results_str = this.results.join(' '); 862 863 // çµæã data屿§ã«åæ ãã 864 // ååã¨åããªãåæ ããªã 865 if (results_str !== this.last_results_str) { 866 this.last_results_str = results_str; 867 get_node_array(this.target).forEach(function (target) { 868 target.setAttribute(ATTR_NAME, results_str); 869 }); 870 } 871 } 872 873 /** 874 * æä¸é¨ãæä¸é¨ãã®ãã§ã㯠875 */ 876 877 }, { 878 key: '_check_top_and_bottom', 879 value: function _check_top_and_bottom(scroll_top) { 880 var opt = this.opt; 881 var doc_height = this.element ? this.element.scrollHeight : document.documentElement.scrollHeight; 882 var scroll_bottom = doc_height - this.win_height; 883 884 // æä¸é¨ã 885 if (scroll_top <= opt.offset_top) { 886 // ãã¼ã¸æä¸é¨ 887 if (!this.is_top) opt.onTop(); 888 this.is_top = true; 889 this.results.push(ATTR_TOP); 890 } else { 891 // æä¸é¨ããé¢ãã 892 if (this.is_top) opt.onNotTop(); 893 this.is_top = false; 894 this.results.push(ATTR_NOT_TOP); 895 } 896 897 // æä¸é¨ã 898 if (scroll_top >= scroll_bottom - opt.offset_bottom) { 899 // ãã¼ã¸æä¸é¨ 900 if (!this.is_bottom) opt.onBottom(); 901 this.is_bottom = true; 902 this.results.push(ATTR_BOTTOM); 903 } else { 904 // æä¸é¨ããé¢ãã 905 if (this.is_bottom) opt.onNotBottom(); 906 this.is_bottom = false; 907 this.results.push(ATTR_NOT_BOTTOM); 908 } 909 } 910 911 /** 912 * ã¦ã£ã³ãã¦ããªãµã¤ãºãããé«ããªã©ããã§ã㯠913 */ 914 915 }, { 916 key: '_resize', 917 value: function _resize() { 918 this.win_height = this.element ? this.element.clientHeight : window.window.innerHeight; 919 } 920 }]); 921 922 return _class; 923}(); 924 925function get_node_array(node_list) { 926 return Array.prototype.slice.call(node_list, 0); 927} 928 929/* harmony default export */ __webpack_exports__["default"] = (_class); 930 931 932/***/ }), 933
vendor: 1,949 bytes, lines 934-989
934/***/ "./node_modules/@sygnas/scroll-inview/dist/es6/_virtual/_rollupPluginBabelHelpers.js": 935/*!*******************************************************************************************!*\ 936 !*** ./node_modules/@sygnas/scroll-inview/dist/es6/_virtual/_rollupPluginBabelHelpers.js ***! 937 \*******************************************************************************************/ 938/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 939 940"use strict"; 941__webpack_require__.r(__webpack_exports__); 942/* harmony export */ __webpack_require__.d(__webpack_exports__, { 943/* harmony export */ "classCallCheck": function() { return /* binding */ _classCallCheck; }, 944/* harmony export */ "createClass": function() { return /* binding */ _createClass; }, 945/* harmony export */ "defineProperty": function() { return /* binding */ _defineProperty; } 946/* harmony export */ }); 947function _classCallCheck(instance, Constructor) { 948 if (!(instance instanceof Constructor)) { 949 throw new TypeError("Cannot call a class as a function"); 950 } 951} 952 953function _defineProperties(target, props) { 954 for (var i = 0; i < props.length; i++) { 955 var descriptor = props[i]; 956 descriptor.enumerable = descriptor.enumerable || false; 957 descriptor.configurable = true; 958 if ("value" in descriptor) descriptor.writable = true; 959 Object.defineProperty(target, descriptor.key, descriptor); 960 } 961} 962 963function _createClass(Constructor, protoProps, staticProps) { 964 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 965 if (staticProps) _defineProperties(Constructor, staticProps); 966 return Constructor; 967} 968 969function _defineProperty(obj, key, value) { 970 if (key in obj) { 971 Object.defineProperty(obj, key, { 972 value: value, 973 enumerable: true, 974 configurable: true, 975 writable: true 976 }); 977 } else { 978 obj[key] = value; 979 } 980 981 return obj; 982} 983 984 985//# sourceMappingURL=_rollupPluginBabelHelpers.js.map 986 987 988/***/ }), 989
vendor: 4,587 bytes, lines 990-1127
990/***/ "./node_modules/@sygnas/scroll-inview/dist/es6/index.js": 991/*!**************************************************************!*\ 992 !*** ./node_modules/@sygnas/scroll-inview/dist/es6/index.js ***! 993 \**************************************************************/ 994/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 995 996"use strict"; 997__webpack_require__.r(__webpack_exports__); 998/* harmony export */ __webpack_require__.d(__webpack_exports__, { 999/* harmony export */ "default": function() { return /* binding */ _default; } 1000/* harmony export */ }); 1001/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_virtual/_rollupPluginBabelHelpers.js */ "./node_modules/@sygnas/scroll-inview/dist/es6/_virtual/_rollupPluginBabelHelpers.js"); 1002 1003 1004/** 1005 * Scroll in viewport add data attribute 1006 * ã¹ã¯ãã¼ã«ãã¦ãã¥ã¼ãã¼ãã«å ¥ã£ããdata屿§ãä¸ãã 1007 * 1008 * @author Hiroshi Fukuda <[email protected]> 1009 * @license MIT 1010 */ 1011var ATTR_INVIEW = 'data-inview'; 1012var ATTR_ROOT = 'data-inview-root'; 1013var ATTR_MARGIN = 'data-inview-rootMargin'; 1014var ATTR_THRESHOLD = 'data-inview-threshold'; 1015var DEFAULT = { 1016 root: null, 1017 rootMargin: '0px', 1018 threshold: 0 1019}; 1020/** 1021 * in view controller 1022 */ 1023 1024var _default = /*#__PURE__*/function () { 1025 /** 1026 * ã³ã³ã¹ãã©ã¯ã¿ 1027 * ã¿ã¼ã²ããä¸è¦§ãç²¾æ»ãã¦ã data-inview-rootãdata-inview-rootMarginãdata-inview-threshold ãè¨å®ããã¦ããªãã確èªããã 1028 * ä¸è¨å±æ§æ¯ã« observer ã使ããã 1029 */ 1030 function _default(target) { 1031 var _this = this; 1032 1033 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 1034 1035 (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.classCallCheck)(this, _default); 1036 1037 (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.defineProperty)(this, "onInviewFunc", undefined); 1038 1039 (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.defineProperty)(this, "targetList", void 0); 1040 1041 (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.defineProperty)(this, "opt", void 0); 1042 1043 this.targetList = {}; 1044 this.opt = Object.assign(DEFAULT, option); 1045 this.onInviewFunc = undefined; 1046 document.querySelectorAll(target).forEach(function (target) { 1047 _this.initTargetList(target); 1048 }); 1049 } 1050 /** 1051 * ã¿ã¼ã²ããã¨ãªãã·ã§ã³ã®ç®¡çãªã¹ãã使 1052 */ 1053 1054 1055 (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_0__.createClass)(_default, [{ 1056 key: "initTargetList", 1057 value: function initTargetList(target) { 1058 // ç£è¦å¯¾è±¡ã¨ã¬ã¡ã³ãã«ç¬èªæå®ãããã°ãã¡ãã使ãã 1059 // ç¡ããã°ãªãã·ã§ã³è¨å®ã使ã 1060 var root = target.getAttribute(ATTR_ROOT) || this.opt.root; 1061 var rootMargin = target.getAttribute(ATTR_MARGIN) || this.opt.rootMargin; 1062 var threshold = Number(target.getAttribute(ATTR_THRESHOLD)) || this.opt.threshold; 1063 var key = "".concat(root, "-").concat(rootMargin, "-").concat(threshold); 1064 1065 if (key in this.targetList === false) { 1066 var option = { 1067 root: root, 1068 rootMargin: rootMargin, 1069 threshold: threshold 1070 }; 1071 var observer = new IntersectionObserver(this.observerCallback.bind(this), option); 1072 this.targetList[key] = { 1073 list: [], 1074 observer: observer 1075 }; 1076 } 1077 1078 this.targetList[key].list.push(target); 1079 } 1080 /** 1081 * ã¹ã¯ãã¼ã«æ¤ç¥å¦çãéå§ 1082 */ 1083 1084 }, { 1085 key: "start", 1086 value: function start() { 1087 var _this2 = this; 1088 1089 Object.keys(this.targetList).forEach(function (key) { 1090 var targetObj = _this2.targetList[key]; 1091 targetObj.list.forEach(function (target) { 1092 targetObj.observer.observe(target); 1093 }); 1094 }); 1095 } 1096 /** 1097 * ç»é¢ã«å ¥ã£ãã ATTR_INVIEW ã®data屿§ã« true ãå ¥ããã 1098 * ãªãã¶ã¼ãã¼ããç£è¦è§£é¤ãããã 1099 */ 1100 1101 }, { 1102 key: "observerCallback", 1103 value: function observerCallback(entries, observer) { 1104 var _this3 = this; 1105 1106 entries.forEach(function (entry) { 1107 if (!entry.isIntersecting) return; // inviewããæã«å®è¡ããå¤é¨é¢æ° 1108 1109 if (_this3.onInviewFunc) { 1110 _this3.onInviewFunc(entry.target); 1111 } 1112 1113 observer.unobserve(entry.target); 1114 entry.target.setAttribute(ATTR_INVIEW, 'true'); 1115 }); 1116 } 1117 }]); 1118 1119 return _default; 1120}(); 1121 1122 1123//# sourceMappingURL=index.js.map 1124 1125 1126/***/ }), 1127
vendor: 719 bytes, lines 1128-1153
1128/***/ "./node_modules/@sygnas/throttle/dist/throttle.es.js": 1129/*!***********************************************************!*\ 1130 !*** ./node_modules/@sygnas/throttle/dist/throttle.es.js ***! 1131 \***********************************************************/ 1132/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1133 1134"use strict"; 1135__webpack_require__.r(__webpack_exports__); 1136function index (timing, func, scope) { 1137 var id = null; 1138 1139 return function () { 1140 if (id !== null) return; 1141 func.apply(scope); 1142 1143 id = setTimeout(function () { 1144 id = null; 1145 }, timing); 1146 }; 1147} 1148 1149/* harmony default export */ __webpack_exports__["default"] = (index); 1150 1151 1152/***/ }), 1153
vendor: 9,677 bytes, lines 1154-1408
1154/***/ "./node_modules/@sygnas/vue-tabs/dist/vue-tabs.es.js": 1155/*!***********************************************************!*\ 1156 !*** ./node_modules/@sygnas/vue-tabs/dist/vue-tabs.es.js ***! 1157 \***********************************************************/ 1158/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1159 1160"use strict"; 1161__webpack_require__.r(__webpack_exports__); 1162/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1163/* harmony export */ "VueTabs": function() { return /* binding */ _sfc_main$1; }, 1164/* harmony export */ "VueTabsContent": function() { return /* binding */ _sfc_main; }, 1165/* harmony export */ "useTabControl": function() { return /* binding */ useTabControl; } 1166/* harmony export */ }); 1167/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js"); 1168 1169 1170const _hoisted_1$1 = ["target", "rel", "href", "data-active"]; 1171const _hoisted_2 = ["target", "rel", "href", "data-active"]; 1172const _sfc_main$2 = /* @__PURE__ */ (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ 1173 props: { 1174 activeId: null, 1175 id: null, 1176 href: null, 1177 isBlank: { type: Boolean }, 1178 classItem: null, 1179 classLink: null, 1180 isListTag: { type: Boolean }, 1181 handlClick: null 1182 }, 1183 setup(__props) { 1184 const props = __props; 1185 const isActive = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { 1186 if (props.href) 1187 return false; 1188 if (props.activeId === props.id) 1189 return true; 1190 return false; 1191 }); 1192 const clickLink = (e) => { 1193 if (props.href) 1194 return true; 1195 props.handlClick(props.id); 1196 e.preventDefault(); 1197 }; 1198 return (_ctx, _cache) => { 1199 return props.isListTag ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("li", { 1200 key: 0, 1201 class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(props.classItem) 1202 }, [ 1203 (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("a", { 1204 target: props.isBlank ? "_blank" : "", 1205 rel: props.isBlank ? "noopener noreferrer" : "", 1206 href: props.href, 1207 class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(props.classLink), 1208 "data-active": (0,vue__WEBPACK_IMPORTED_MODULE_0__.unref)(isActive) ? "true" : "", 1209 onClick: clickLink 1210 }, [ 1211 (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "default") 1212 ], 10, _hoisted_1$1) 1213 ], 2)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("a", { 1214 key: 1, 1215 target: props.isBlank ? "_blank" : "", 1216 rel: props.isBlank ? "noopener noreferrer" : "", 1217 href: props.href, 1218 class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(props.classLink), 1219 "data-active": (0,vue__WEBPACK_IMPORTED_MODULE_0__.unref)(isActive) ? "true" : "", 1220 onClick: clickLink 1221 }, [ 1222 (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "default") 1223 ], 10, _hoisted_2)); 1224 }; 1225 } 1226}); 1227 1228const EV_CHANGE = "change"; 1229const EV_CLICK = "click"; 1230const tabGroups = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]); 1231const $_getGroup = (groupId) => { 1232 const group = tabGroups.value.find((group2) => group2.groupId === groupId); 1233 if (group) 1234 return group; 1235 const newGroup = { 1236 groupId, 1237 activeId: "", 1238 tabIdList: [], 1239 intervalId: 0, 1240 events: new EventTarget() 1241 }; 1242 tabGroups.value.push(newGroup); 1243 return tabGroups.value.find((group2) => group2.groupId === groupId); 1244}; 1245function useTabControl(groupId, isMaster = false, useHash = false) { 1246 return (() => { 1247 const $_group = $_getGroup(groupId); 1248 const activeId = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { 1249 return $_group.activeId; 1250 }); 1251 const activeIndex = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { 1252 return $_group.tabIdList.indexOf($_group.activeId); 1253 }); 1254 const setActiveId = (activeId2, isTabClick = false) => { 1255 $_group.activeId = activeId2; 1256 if (isTabClick) { 1257 const event = new CustomEvent(EV_CLICK, { detail: activeId2 }); 1258 $_group.events.dispatchEvent(event); 1259 } 1260 }; 1261 const setTabIdList = (idList) => { 1262 $_group.tabIdList = idList; 1263 }; 1264 const changeNextTab = () => { 1265 const nextIndex = (activeIndex.value + 1) % $_group.tabIdList.length; 1266 setActiveId($_group.tabIdList[nextIndex]); 1267 }; 1268 const changePrevTab = () => { 1269 const index = activeIndex.value - 1; 1270 const prevIndex = index <= -1 ? $_group.tabIdList.length - 1 : index; 1271 setActiveId($_group.tabIdList[prevIndex]); 1272 }; 1273 const addChangeListener = (func) => { 1274 $_group.events.addEventListener(EV_CHANGE, func); 1275 }; 1276 const addClickListener = (func) => { 1277 $_group.events.addEventListener(EV_CLICK, func); 1278 }; 1279 const startAutoChange = (time) => { 1280 $_group.intervalId = setInterval(() => { 1281 changeNextTab(); 1282 }, time); 1283 }; 1284 const stopAutoChange = () => { 1285 clearInterval($_group.intervalId); 1286 }; 1287 (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(activeId, () => { 1288 if (isMaster) { 1289 const event = new CustomEvent(EV_CHANGE, { detail: activeId.value }); 1290 $_group.events.dispatchEvent(event); 1291 } 1292 if (useHash && isMaster) { 1293 location.hash = activeId.value; 1294 } 1295 }); 1296 return { 1297 activeId, 1298 activeIndex, 1299 setActiveId, 1300 setTabIdList, 1301 changeNextTab, 1302 changePrevTab, 1303 startAutoChange, 1304 stopAutoChange, 1305 addChangeListener, 1306 addClickListener 1307 }; 1308 })(); 1309} 1310 1311const _hoisted_1 = ["innerHTML"]; 1312const _sfc_main$1 = /* @__PURE__ */ (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ 1313 props: { 1314 group: null, 1315 default: { default: "" }, 1316 items: null, 1317 useHash: { type: Boolean, default: false }, 1318 isListTag: { type: Boolean, default: false }, 1319 auto: null, 1320 isStopAuto: { type: Boolean }, 1321 classTabs: { default: "c-tabmenu" }, 1322 classItem: { default: "c-tabmenu__item" }, 1323 classLink: { default: "c-tabmenu__link" } 1324 }, 1325 setup(__props) { 1326 const props = __props; 1327 const tabControl = useTabControl(props.group, true, props.useHash); 1328 const itemClicked = (id) => { 1329 if (id === tabControl.activeId.value) 1330 return; 1331 tabControl.setActiveId(id, true); 1332 if (props.isStopAuto) { 1333 tabControl.stopAutoChange(); 1334 } 1335 }; 1336 (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => { 1337 const idList = props.items.filter((item) => item.id).map((item) => item.id); 1338 tabControl.setTabIdList(idList); 1339 if (props.useHash && location.hash) { 1340 tabControl.setActiveId(location.hash.substr(1)); 1341 } else { 1342 tabControl.setActiveId(props.default); 1343 } 1344 if (props.auto && props.auto >= 1) { 1345 tabControl.startAutoChange(props.auto); 1346 } 1347 }); 1348 (0,vue__WEBPACK_IMPORTED_MODULE_0__.onUnmounted)(() => { 1349 tabControl.stopAutoChange(); 1350 }); 1351 return (_ctx, _cache) => { 1352 return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)((0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveDynamicComponent)(props.isListTag ? "ul" : "div"), { 1353 class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(props.classTabs) 1354 }, { 1355 default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [ 1356 ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)(props.items, (item, index) => { 1357 return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_sfc_main$2, { 1358 id: item.id, 1359 key: index, 1360 "active-id": (0,vue__WEBPACK_IMPORTED_MODULE_0__.unref)(tabControl).activeId.value, 1361 href: item.href || "", 1362 "is-blank": item.isBlank || false, 1363 "class-item": props.classItem, 1364 "class-link": props.classLink, 1365 "is-list-tag": props.isListTag, 1366 "handl-click": itemClicked 1367 }, { 1368 default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [ 1369 (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("span", { 1370 innerHTML: item.value 1371 }, null, 8, _hoisted_1) 1372 ]), 1373 _: 2 1374 }, 1032, ["id", "active-id", "href", "is-blank", "class-item", "class-link", "is-list-tag"]); 1375 }), 128)) 1376 ]), 1377 _: 1 1378 }, 8, ["class"]); 1379 }; 1380 } 1381}); 1382 1383const _sfc_main = /* @__PURE__ */ (0,vue__WEBPACK_IMPORTED_MODULE_0__.defineComponent)({ 1384 props: { 1385 group: null, 1386 tabId: null, 1387 tag: { default: "div" } 1388 }, 1389 setup(__props) { 1390 const props = __props; 1391 const tabControl = useTabControl(props.group); 1392 return (_ctx, _cache) => { 1393 return props.tabId === (0,vue__WEBPACK_IMPORTED_MODULE_0__.unref)(tabControl).activeId.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)((0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveDynamicComponent)(props.tag), { key: 0 }, { 1394 default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [ 1395 (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, "default") 1396 ]), 1397 _: 3 1398 })) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)("", true); 1399 }; 1400 } 1401}); 1402 1403 1404//# sourceMappingURL=vue-tabs.es.js.map 1405 1406 1407/***/ }), 1408
1409/***/ "./src/js/pages/common/common.js": 1410/*!***************************************!*\ 1411 !*** ./src/js/pages/common/common.js ***! 1412 \***************************************/ 1413/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1414 1415"use strict"; 1416__webpack_require__.r(__webpack_exports__); 1417/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1418/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1419/* harmony export */ }); 1420/* harmony import */ var _lazyload__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lazyload */ "./src/js/pages/common/lazyload.js"); 1421/* harmony import */ var _mediaquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mediaquery */ "./src/js/pages/common/mediaquery.ts"); 1422/* harmony import */ var _check_ua__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./check-ua */ "./src/js/pages/common/check-ua.ts"); 1423/* harmony import */ var _pagescroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pagescroll */ "./src/js/pages/common/pagescroll.ts"); 1424/* harmony import */ var _scroll_amount__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scroll-amount */ "./src/js/pages/common/scroll-amount.ts"); 1425/* harmony import */ var _social_share__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./social-share */ "./src/js/pages/common/social-share.ts"); 1426/* harmony import */ var _common_popup__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./common_popup */ "./src/js/pages/common/common_popup.js"); 1427/* harmony import */ var _menu__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./menu */ "./src/js/pages/common/menu.ts"); 1428/* harmony import */ var _loading__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./loading */ "./src/js/pages/common/loading.js"); 1429/* harmony import */ var _loading_complete__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./loading_complete */ "./src/js/pages/common/loading_complete.js"); 1430/* harmony import */ var _tabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./tabs */ "./src/js/pages/common/tabs.ts"); 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1444 (0,_lazyload__WEBPACK_IMPORTED_MODULE_0__["default"])(); 1445 (0,_mediaquery__WEBPACK_IMPORTED_MODULE_1__["default"])(); 1446 (0,_check_ua__WEBPACK_IMPORTED_MODULE_2__["default"])(); 1447 (0,_pagescroll__WEBPACK_IMPORTED_MODULE_3__["default"])(); 1448 (0,_scroll_amount__WEBPACK_IMPORTED_MODULE_4__["default"])(); 1449 (0,_social_share__WEBPACK_IMPORTED_MODULE_5__["default"])(); 1450 (0,_menu__WEBPACK_IMPORTED_MODULE_7__["default"])(); 1451 (0,_common_popup__WEBPACK_IMPORTED_MODULE_6__["default"])(); 1452 (0,_tabs__WEBPACK_IMPORTED_MODULE_10__["default"])(); 1453 (0,_loading__WEBPACK_IMPORTED_MODULE_8__["default"])().then(_loading_complete__WEBPACK_IMPORTED_MODULE_9__["default"]); 1454} 1455 1456 1457/***/ }), 1458
1459/***/ "./src/js/pages/common/common_popup.js": 1460/*!*********************************************!*\ 1461 !*** ./src/js/pages/common/common_popup.js ***! 1462 \*********************************************/ 1463/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1464 1465"use strict"; 1466__webpack_require__.r(__webpack_exports__); 1467/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1468/* harmony export */ "AJAX_SETTINGS": function() { return /* binding */ AJAX_SETTINGS; }, 1469/* harmony export */ "NORMAL_SETTINGS": function() { return /* binding */ NORMAL_SETTINGS; }, 1470/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1471/* harmony export */ }); 1472/* harmony import */ var _lazyload__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lazyload */ "./src/js/pages/common/lazyload.js"); 1473 1474 1475const closeButton = '<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}"><i class="i-arrows-times-1"></i></button>'; 1476const NORMAL_SETTINGS = { 1477 mainClass: "", 1478 dragToClose: false, 1479 tpl: { closeButton } 1480}; 1481const AJAX_SETTINGS = { 1482 type: "ajax", 1483 infobar: false, 1484 toolbar: true, 1485 buttons: ["close"], 1486 btnTpl: { 1487 close: closeButton 1488 }, 1489 smallBtn: false, 1490 beforeShow: (instance, current) => { 1491 window.location.hash = current.src; 1492 }, 1493 afterShow: () => { 1494 (0,_lazyload__WEBPACK_IMPORTED_MODULE_0__["default"])(); 1495 }, 1496 beforeClose: () => { 1497 window.location.hash = ""; 1498 } 1499}; 1500/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1501 $("[data-fancybox]").fancybox({ 1502 infobar: false, 1503 toolbar: true, 1504 buttons: ["close"], 1505 btnTpl: { 1506 close: '<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}"><i class="i-arrows-times-1"></i></button>' 1507 } 1508 }); 1509 $("[data-fancybox-ajax]").fancybox(AJAX_SETTINGS); 1510} 1511 1512 1513/***/ }), 1514
1515/***/ "./src/js/pages/common/lazyload.js": 1516/*!*****************************************!*\ 1517 !*** ./src/js/pages/common/lazyload.js ***! 1518 \*****************************************/ 1519/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1520 1521"use strict"; 1522__webpack_require__.r(__webpack_exports__); 1523/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1524/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1525/* harmony export */ }); 1526/* harmony import */ var lazysizes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lazysizes */ "./node_modules/lazysizes/lazysizes.js"); 1527/* harmony import */ var lazysizes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lazysizes__WEBPACK_IMPORTED_MODULE_0__); 1528/* harmony import */ var lazysizes_plugins_unveilhooks_ls_unveilhooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lazysizes/plugins/unveilhooks/ls.unveilhooks */ "./node_modules/lazysizes/plugins/unveilhooks/ls.unveilhooks.js"); 1529/* harmony import */ var lazysizes_plugins_unveilhooks_ls_unveilhooks__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lazysizes_plugins_unveilhooks_ls_unveilhooks__WEBPACK_IMPORTED_MODULE_1__); 1530 1531 1532 1533/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1534 (lazysizes__WEBPACK_IMPORTED_MODULE_0___default().cfg.lazyClass) = "js-lazy"; 1535} 1536 1537 1538/***/ }), 1539
1540/***/ "./src/js/pages/common/loading.js": 1541/*!****************************************!*\ 1542 !*** ./src/js/pages/common/loading.js ***! 1543 \****************************************/ 1544/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1545 1546"use strict"; 1547__webpack_require__.r(__webpack_exports__); 1548/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1549/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1550/* harmony export */ }); 1551/* harmony import */ var preloader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preloader */ "./node_modules/preloader/index.js"); 1552/* harmony import */ var preloader__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preloader__WEBPACK_IMPORTED_MODULE_0__); 1553 1554 1555/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(add_urls = []) { 1556 const $progress_bar = $(".js-loading-progress"); 1557 const loader = preloader__WEBPACK_IMPORTED_MODULE_0___default()({ xhrImages: false }); 1558 const image_urls = get_image_list(); 1559 const urls = Object.assign(image_urls, add_urls); 1560 return new Promise((resolve, reject) => { 1561 urls.forEach((url) => { 1562 loader.add(url); 1563 }); 1564 loader.on("progress", (percent, url) => { 1565 $progress_bar.css({ width: `${percent * 100}%` }); 1566 }); 1567 loader.on("complete", () => { 1568 $progress_bar.css({ width: "100%" }); 1569 $(window).trigger("page_load_complete"); 1570 resolve(); 1571 }); 1572 loader.load(); 1573 }); 1574} 1575function get_image_list() { 1576 const hostname = /^https?:\/\/[^/]+\//.exec(window.location.href)[0]; 1577 const images = document.getElementsByTagName("img"); 1578 const urls = []; 1579 for (let i = 0; i < images.length; i += 1) { 1580 const src = images[i].src; 1581 if (src.indexOf(hostname) === 0) { 1582 urls.push(src); 1583 } 1584 } 1585 return urls; 1586} 1587 1588 1589/***/ }), 1590
1591/***/ "./src/js/pages/common/loading_complete.js": 1592/*!*************************************************!*\ 1593 !*** ./src/js/pages/common/loading_complete.js ***! 1594 \*************************************************/ 1595/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1596 1597"use strict"; 1598__webpack_require__.r(__webpack_exports__); 1599/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1600/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1601/* harmony export */ }); 1602/* harmony import */ var _scroll_invew__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scroll-invew */ "./src/js/pages/common/scroll-invew.ts"); 1603 1604 1605/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1606 setTimeout(fadein, 200); 1607 setTimeout(remove_fadein, 1200); 1608 setTimeout(_scroll_invew__WEBPACK_IMPORTED_MODULE_0__["default"], 1200); 1609} 1610function fadein() { 1611 $(".js-fadein").attr("data-progress-finish", "true"); 1612} 1613function remove_fadein() { 1614 $(".js-fadein").remove(); 1615} 1616 1617 1618/***/ }), 1619
1620/***/ "./src/js/pages/common/check-ua.ts": 1621/*!*****************************************!*\ 1622 !*** ./src/js/pages/common/check-ua.ts ***! 1623 \*****************************************/ 1624/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1625 1626"use strict"; 1627__webpack_require__.r(__webpack_exports__); 1628/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1629/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1630/* harmony export */ }); 1631/* harmony import */ var is_touch_device__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-touch-device */ "./node_modules/is-touch-device/build/index.js"); 1632/* harmony import */ var is_touch_device__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(is_touch_device__WEBPACK_IMPORTED_MODULE_0__); 1633 1634 1635/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1636 if (is_touch_device__WEBPACK_IMPORTED_MODULE_0___default()()) { 1637 document.body.setAttribute("data-is-mobile", "true"); 1638 } else { 1639 document.body.setAttribute("data-is-mobile", "false"); 1640 } 1641} 1642 1643 1644/***/ }), 1645
1646/***/ "./src/js/pages/common/mediaquery.ts": 1647/*!*******************************************!*\ 1648 !*** ./src/js/pages/common/mediaquery.ts ***! 1649 \*******************************************/ 1650/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1651 1652"use strict"; 1653__webpack_require__.r(__webpack_exports__); 1654/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1655/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1656/* harmony export */ }); 1657/* harmony import */ var _sygnas_mediaquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sygnas/mediaquery */ "./node_modules/@sygnas/mediaquery/dist/es6/index.js"); 1658 1659 1660/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1661 _sygnas_mediaquery__WEBPACK_IMPORTED_MODULE_0__["default"].addMedia("pc", "screen and (min-width: 801px)"); 1662 _sygnas_mediaquery__WEBPACK_IMPORTED_MODULE_0__["default"].addMedia("sp", "screen and (max-width: 800px)"); 1663} 1664 1665 1666/***/ }), 1667
1668/***/ "./src/js/pages/common/menu.ts": 1669/*!*************************************!*\ 1670 !*** ./src/js/pages/common/menu.ts ***! 1671 \*************************************/ 1672/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1673 1674"use strict"; 1675__webpack_require__.r(__webpack_exports__); 1676/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1677/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1678/* harmony export */ }); 1679 1680const getHamburger = () => { 1681 return document.querySelector(".js-hamburger"); 1682}; 1683/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1684 const $hamburger = $(".js-hamburger"); 1685 $hamburger.on("click", toggle_menu); 1686 $(".c-mainmenu a.js-pagescroll").on("click", toggle_menu); 1687 $(".js-has-submenu").on("click", toggle_submenu); 1688} 1689function toggle_menu(ev) { 1690 const hamburger = getHamburger(); 1691 const state = hamburger?.getAttribute("data-hamburger-open"); 1692 const is_open = state === "true" ? "false" : "true"; 1693 hamburger.setAttribute("data-hamburger-open", is_open); 1694 $(".js-sp-menu").attr("data-sp-menu", is_open === "true" ? "open" : "close"); 1695 if (ev.currentTarget === hamburger) { 1696 ev.preventDefault(); 1697 } 1698} 1699function toggle_submenu(ev) { 1700 const $button = $(ev.currentTarget); 1701 const $submenu = $button.next(); 1702 const is_opened = $button.attr("data-submenu-opened") === "true"; 1703 if (is_opened) { 1704 $button.attr("data-submenu-opened", "false"); 1705 $submenu.attr("data-submenu-opened", "false"); 1706 } else { 1707 $button.attr("data-submenu-opened", "true"); 1708 $submenu.attr("data-submenu-opened", "true"); 1709 } 1710 ev.preventDefault(); 1711} 1712 1713 1714/***/ }), 1715
1716/***/ "./src/js/pages/common/pagescroll.ts": 1717/*!*******************************************!*\ 1718 !*** ./src/js/pages/common/pagescroll.ts ***! 1719 \*******************************************/ 1720/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1721 1722"use strict"; 1723__webpack_require__.r(__webpack_exports__); 1724/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1725/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1726/* harmony export */ }); 1727/* harmony import */ var smooth_scroll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! smooth-scroll */ "./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js"); 1728/* harmony import */ var smooth_scroll__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(smooth_scroll__WEBPACK_IMPORTED_MODULE_0__); 1729 1730 1731/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1732 const click_scroll = new (smooth_scroll__WEBPACK_IMPORTED_MODULE_0___default())("a.js-pagescroll", { 1733 speed: 500, 1734 offset: 80, 1735 easing: "easeInOutCubic" 1736 }); 1737 const scroll = new (smooth_scroll__WEBPACK_IMPORTED_MODULE_0___default())(); 1738 $(".js-return-up").on("click", (ev) => { 1739 scroll.animateScroll(0, null, { 1740 speed: 500, 1741 offset: 0, 1742 easing: "easeInOutCubic" 1743 }); 1744 ev.preventDefault(); 1745 }); 1746} 1747 1748 1749/***/ }), 1750
1751/***/ "./src/js/pages/common/scroll-amount.ts": 1752/*!**********************************************!*\ 1753 !*** ./src/js/pages/common/scroll-amount.ts ***! 1754 \**********************************************/ 1755/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1756 1757"use strict"; 1758__webpack_require__.r(__webpack_exports__); 1759/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1760/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1761/* harmony export */ }); 1762/* harmony import */ var _sygnas_scroll_amount__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sygnas/scroll-amount */ "./node_modules/@sygnas/scroll-amount/dist/scroll-amount.es.js"); 1763 1764 1765/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1766 const scroll_amount = new _sygnas_scroll_amount__WEBPACK_IMPORTED_MODULE_0__["default"](".js-scroll-amount"); 1767} 1768 1769 1770/***/ }), 1771
1772/***/ "./src/js/pages/common/scroll-invew.ts": 1773/*!*********************************************!*\ 1774 !*** ./src/js/pages/common/scroll-invew.ts ***! 1775 \*********************************************/ 1776/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1777 1778"use strict"; 1779__webpack_require__.r(__webpack_exports__); 1780/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1781/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1782/* harmony export */ }); 1783/* harmony import */ var _sygnas_scroll_inview__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sygnas/scroll-inview */ "./node_modules/@sygnas/scroll-inview/dist/es6/index.js"); 1784 1785 1786/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1787 const inview = new _sygnas_scroll_inview__WEBPACK_IMPORTED_MODULE_0__["default"](".js-inview", { rootMargin: "0px 0px -20% 0px" }); 1788 inview.start(); 1789} 1790 1791 1792/***/ }), 1793
1794/***/ "./src/js/pages/common/social-share.ts": 1795/*!*********************************************!*\ 1796 !*** ./src/js/pages/common/social-share.ts ***! 1797 \*********************************************/ 1798/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1799 1800"use strict"; 1801__webpack_require__.r(__webpack_exports__); 1802/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1803/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1804/* harmony export */ }); 1805/* harmony import */ var _sygnas_jp_social_share__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @sygnas/jp-social-share */ "./node_modules/@sygnas/jp-social-share/dist/es6/index.js"); 1806 1807 1808/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1809 _sygnas_jp_social_share__WEBPACK_IMPORTED_MODULE_0__["default"].setShareButton(".js-share-button"); 1810} 1811 1812 1813/***/ }), 1814
1815/***/ "./src/js/pages/common/tabs.ts": 1816/*!*************************************!*\ 1817 !*** ./src/js/pages/common/tabs.ts ***! 1818 \*************************************/ 1819/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1820 1821"use strict"; 1822__webpack_require__.r(__webpack_exports__); 1823/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1824/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; } 1825/* harmony export */ }); 1826/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm-bundler.js"); 1827/* harmony import */ var _sygnas_vue_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @sygnas/vue-tabs */ "./node_modules/@sygnas/vue-tabs/dist/vue-tabs.es.js"); 1828 1829 1830 1831/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() { 1832 const target = "#app-tab"; 1833 if (!document.querySelector(target)) { 1834 return; 1835 } 1836 const tabControl = (0,_sygnas_vue_tabs__WEBPACK_IMPORTED_MODULE_1__.useTabControl)("tabGroup"); 1837 const app = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createApp)({ 1838 components: { 1839 VueTabs: _sygnas_vue_tabs__WEBPACK_IMPORTED_MODULE_1__.VueTabs 1840 }, 1841 computed: { 1842 activeId() { 1843 return tabControl.activeId.value; 1844 } 1845 } 1846 }); 1847 app.mount(target); 1848} 1849 1850 1851/***/ }), 1852
vendor: 725 bytes, lines 1853-1869
1853/***/ "./node_modules/is-touch-device/build/index.js": 1854/*!*****************************************************!*\ 1855 !*** ./node_modules/is-touch-device/build/index.js ***! 1856 \*****************************************************/ 1857/***/ (function(module, exports) { 1858 1859Object.defineProperty(exports, "__esModule", ({ 1860 value: true 1861})); 1862exports["default"] = isTouchDevice; 1863function isTouchDevice() { 1864 return !!(typeof window !== 'undefined' && ('ontouchstart' in window || window.DocumentTouch && typeof document !== 'undefined' && document instanceof window.DocumentTouch)) || !!(typeof navigator !== 'undefined' && (navigator.maxTouchPoints || navigator.msMaxTouchPoints)); 1865} 1866module.exports = exports['default']; 1867 1868/***/ }), 1869
vendor: 5,133 bytes, lines 1870-2062
1870/***/ "./node_modules/lazysizes/plugins/unveilhooks/ls.unveilhooks.js": 1871/*!**********************************************************************!*\ 1872 !*** ./node_modules/lazysizes/plugins/unveilhooks/ls.unveilhooks.js ***! 1873 \**********************************************************************/ 1874/***/ (function(module, exports, __webpack_require__) { 1875 1876var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* 1877This plugin extends lazySizes to lazyLoad: 1878background images, videos/posters and scripts 1879 1880Background-Image: 1881For background images, use data-bg attribute: 1882<div class="lazyload" data-bg="bg-img.jpg"></div> 1883 1884 Video: 1885 For video/audio use data-poster and preload="none": 1886 <video class="lazyload" preload="none" data-poster="poster.jpg" src="src.mp4"> 1887 <!-- sources --> 1888 </video> 1889 1890 For video that plays automatically if in view: 1891 <video 1892 class="lazyload" 1893 preload="none" 1894 muted="" 1895 data-autoplay="" 1896 data-poster="poster.jpg" 1897 src="src.mp4"> 1898</video> 1899 1900 Scripts: 1901 For scripts use data-script: 1902 <div class="lazyload" data-script="module-name.js"></div> 1903 1904 1905 Script modules using require: 1906 For modules using require use data-require: 1907 <div class="lazyload" data-require="module-name"></div> 1908*/ 1909 1910(function(window, factory) { 1911 var globalInstall = function(){ 1912 factory(window.lazySizes); 1913 window.removeEventListener('lazyunveilread', globalInstall, true); 1914 }; 1915 1916 factory = factory.bind(null, window, window.document); 1917 1918 if( true && module.exports){ 1919 factory(__webpack_require__(/*! lazysizes */ "./node_modules/lazysizes/lazysizes.js")); 1920 } else if (true) { 1921 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! lazysizes */ "./node_modules/lazysizes/lazysizes.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 1922 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 1923 (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), 1924 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 1925 } else {} 1926}(window, function(window, document, lazySizes) { 1927 /*jshint eqnull:true */ 1928 'use strict'; 1929 var bgLoad, regBgUrlEscape; 1930 var uniqueUrls = {}; 1931 1932 if(document.addEventListener){ 1933 regBgUrlEscape = /\(|\)|\s|'/; 1934 1935 bgLoad = function (url, cb){ 1936 var img = document.createElement('img'); 1937 img.onload = function(){ 1938 img.onload = null; 1939 img.onerror = null; 1940 img = null; 1941 cb(); 1942 }; 1943 img.onerror = img.onload; 1944 1945 img.src = url; 1946 1947 if(img && img.complete && img.onload){ 1948 img.onload(); 1949 } 1950 }; 1951 1952 addEventListener('lazybeforeunveil', function(e){ 1953 if(e.detail.instance != lazySizes){return;} 1954 1955 var tmp, load, bg, poster; 1956 if(!e.defaultPrevented) { 1957 1958 var target = e.target; 1959 1960 if(target.preload == 'none'){ 1961 target.preload = target.getAttribute('data-preload') || 'auto'; 1962 } 1963 1964 if (target.getAttribute('data-autoplay') != null) { 1965 if (target.getAttribute('data-expand') && !target.autoplay) { 1966 try { 1967 target.play(); 1968 } catch (er) {} 1969 } else { 1970 requestAnimationFrame(function () { 1971 target.setAttribute('data-expand', '-10'); 1972 lazySizes.aC(target, lazySizes.cfg.lazyClass); 1973 }); 1974 } 1975 } 1976 1977 tmp = target.getAttribute('data-link'); 1978 if(tmp){ 1979 addStyleScript(tmp, true); 1980 } 1981 1982 // handle data-script 1983 tmp = target.getAttribute('data-script'); 1984 if(tmp){ 1985 e.detail.firesLoad = true; 1986 load = function(){ 1987 e.detail.firesLoad = false; 1988 lazySizes.fire(target, '_lazyloaded', {}, true, true); 1989 }; 1990 addStyleScript(tmp, null, load); 1991 } 1992 1993 // handle data-require 1994 tmp = target.getAttribute('data-require'); 1995 if(tmp){ 1996 if(lazySizes.cfg.requireJs){ 1997 lazySizes.cfg.requireJs([tmp]); 1998 } else { 1999 addStyleScript(tmp); 2000 } 2001 } 2002 2003 // handle data-bg 2004 bg = target.getAttribute('data-bg'); 2005 if (bg) { 2006 e.detail.firesLoad = true; 2007 load = function(){ 2008 target.style.backgroundImage = 'url(' + (regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg ) + ')'; 2009 e.detail.firesLoad = false; 2010 lazySizes.fire(target, '_lazyloaded', {}, true, true); 2011 }; 2012 2013 bgLoad(bg, load); 2014 } 2015 2016 // handle data-poster 2017 poster = target.getAttribute('data-poster'); 2018 if(poster){ 2019 e.detail.firesLoad = true; 2020 load = function(){ 2021 target.poster = poster; 2022 e.detail.firesLoad = false; 2023 lazySizes.fire(target, '_lazyloaded', {}, true, true); 2024 }; 2025 2026 bgLoad(poster, load); 2027 2028 } 2029 } 2030 }, false); 2031 2032 } 2033 2034 function addStyleScript(src, style, cb){ 2035 if(uniqueUrls[src]){ 2036 return; 2037 } 2038 var elem = document.createElement(style ? 'link' : 'script'); 2039 var insertElem = document.getElementsByTagName('script')[0]; 2040 2041 if(style){ 2042 elem.rel = 'stylesheet'; 2043 elem.href = src; 2044 } else { 2045 elem.onload = function(){ 2046 elem.onerror = null; 2047 elem.onload = null; 2048 cb(); 2049 }; 2050 elem.onerror = elem.onload; 2051 2052 elem.src = src; 2053 } 2054 uniqueUrls[src] = true; 2055 uniqueUrls[elem.src || elem.href] = true; 2056 insertElem.parentNode.insertBefore(elem, insertElem); 2057 } 2058})); 2059 2060 2061/***/ }), 2062
vendor: 550 bytes, lines 2063-2072
2063/***/ "./node_modules/vue/dist/vue.esm-bundler.js": 2064/*!**********************************************************************************************!*\ 2065 !*** delegated ./node_modules/vue/dist/vue.esm-bundler.js from dll-reference vendor_library ***! 2066 \**********************************************************************************************/ 2067/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2068 2069module.exports = (__webpack_require__(/*! dll-reference vendor_library */ "dll-reference vendor_library"))(166); 2070 2071/***/ }), 2072
vendor: 636 bytes, lines 2073-2082
2073/***/ "./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js": 2074/*!********************************************************************************************************************!*\ 2075 !*** delegated ./node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js from dll-reference vendor_library ***! 2076 \********************************************************************************************************************/ 2077/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2078 2079module.exports = (__webpack_require__(/*! dll-reference vendor_library */ "dll-reference vendor_library"))(2); 2080 2081/***/ }), 2082
vendor: 514 bytes, lines 2083-2092
2083/***/ "./node_modules/preloader/index.js": 2084/*!*************************************************************************************!*\ 2085 !*** delegated ./node_modules/preloader/index.js from dll-reference vendor_library ***! 2086 \*************************************************************************************/ 2087/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2088 2089module.exports = (__webpack_require__(/*! dll-reference vendor_library */ "dll-reference vendor_library"))(582); 2090 2091/***/ }), 2092
vendor: 586 bytes, lines 2093-2102
2093/***/ "./node_modules/@sygnas/mediaquery/dist/es6/index.js": 2094/*!*******************************************************************************************************!*\ 2095 !*** delegated ./node_modules/@sygnas/mediaquery/dist/es6/index.js from dll-reference vendor_library ***! 2096 \*******************************************************************************************************/ 2097/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2098 2099module.exports = (__webpack_require__(/*! dll-reference vendor_library */ "dll-reference vendor_library"))(824); 2100 2101/***/ }), 2102
vendor: 526 bytes, lines 2103-2111
2103/***/ "./node_modules/lazysizes/lazysizes.js": 2104/*!*****************************************************************************************!*\ 2105 !*** delegated ./node_modules/lazysizes/lazysizes.js from dll-reference vendor_library ***! 2106 \*****************************************************************************************/ 2107/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2108 2109module.exports = (__webpack_require__(/*! dll-reference vendor_library */ "dll-reference vendor_library"))(90); 2110 2111/***/ })
vendor: 4,233 bytes, lines 2111-2208
2111, 2112 2113/***/ "dll-reference vendor_library": 2114/*!*********************************!*\ 2115 !*** external "vendor_library" ***! 2116 \*********************************/ 2117/***/ (function(module) { 2118 2119"use strict"; 2120module.exports = vendor_library; 2121 2122/***/ }) 2123 2124/******/ }); 2125/************************************************************************/ 2126/******/ // The module cache 2127/******/ var __webpack_module_cache__ = {}; 2128/******/ 2129/******/ // The require function 2130/******/ function __webpack_require__(moduleId) { 2131/******/ // Check if module is in cache 2132/******/ var cachedModule = __webpack_module_cache__[moduleId]; 2133/******/ if (cachedModule !== undefined) { 2134/******/ return cachedModule.exports; 2135/******/ } 2136/******/ // Create a new module (and put it into the cache) 2137/******/ var module = __webpack_module_cache__[moduleId] = { 2138/******/ // no module.id needed 2139/******/ // no module.loaded needed 2140/******/ exports: {} 2141/******/ }; 2142/******/ 2143/******/ // Execute the module function 2144/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 2145/******/ 2146/******/ // Return the exports of the module 2147/******/ return module.exports; 2148/******/ } 2149/******/ 2150/************************************************************************/ 2151/******/ /* webpack/runtime/compat get default export */ 2152/******/ !function() { 2153/******/ // getDefaultExport function for compatibility with non-harmony modules 2154/******/ __webpack_require__.n = function(module) { 2155/******/ var getter = module && module.__esModule ? 2156/******/ function() { return module['default']; } : 2157/******/ function() { return module; }; 2158/******/ __webpack_require__.d(getter, { a: getter }); 2159/******/ return getter; 2160/******/ }; 2161/******/ }(); 2162/******/ 2163/******/ /* webpack/runtime/define property getters */ 2164/******/ !function() { 2165/******/ // define getter functions for harmony exports 2166/******/ __webpack_require__.d = function(exports, definition) { 2167/******/ for(var key in definition) { 2168/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 2169/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 2170/******/ } 2171/******/ } 2172/******/ }; 2173/******/ }(); 2174/******/ 2175/******/ /* webpack/runtime/hasOwnProperty shorthand */ 2176/******/ !function() { 2177/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 2178/******/ }(); 2179/******/ 2180/******/ /* webpack/runtime/make namespace object */ 2181/******/ !function() { 2182/******/ // define __esModule on exports 2183/******/ __webpack_require__.r = function(exports) { 2184/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 2185/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 2186/******/ } 2187/******/ Object.defineProperty(exports, '__esModule', { value: true }); 2188/******/ }; 2189/******/ }(); 2190/******/ 2191/************************************************************************/ 2192var __webpack_exports__ = {}; 2193// This entry need to be wrapped in an IIFE because it need to be in strict mode. 2194!function() { 2195"use strict"; 2196/*!**************************!*\ 2197 !*** ./src/js/common.js ***! 2198 \**************************/ 2199__webpack_require__.r(__webpack_exports__); 2200/* harmony import */ var _pages_common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pages/common/common */ "./src/js/pages/common/common.js"); 2201 2202 2203(0,_pages_common_common__WEBPACK_IMPORTED_MODULE_0__["default"])(); 2204 2205}(); 2206/******/ })() 2207; 2208//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLGtCQUFrQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRTZHO0FBQzdHOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RDNEo7O0FBRTVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLG9GQUFlO0FBQ25COztBQUVBLEVBQUUsaUZBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7O0F
2208BRUE7QUFDQTtBQUNBLHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0U7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFFBQVE7QUFDL0IsbUJBQW1CLFFBQVE7QUFDM0IsdUJBQXVCLFFBQVE7QUFDL0IsdUJBQXVCLFFBQVE7QUFDL0Isc0JBQXNCLFFBQVE7QUFDOUI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7OztBQUdSLGlGQUFpRjtBQUNqRjtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixRQUFRO0FBQy9CLG1CQUFtQixRQUFRO0FBQzNCLHVCQUF1QixRQUFRO0FBQy9CLHVCQUF1QixRQUFRO0FBQy9CLHNCQUFzQixRQUFRO0FBQzlCLGdCQUFnQixRQUFRO0FBQ3hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQSx3REFBd0QsU0FBUztBQUNqRSwyREFBMkQsUUFBUTtBQUNuRTs7QUFFQSxtQ0FBbUMsU0FBUztBQUM1QyxtQ0FBbUMsUUFBUTtBQUMzQyxtQ0FBbUMsU0FBUztBQUM1QyxtQ0FBbUMsS0FBSztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixnQkFBZ0IsUUFBUTtBQUN4Qjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E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VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBLGVBQWUsNEJBQTRCO1dBQzNDLGVBQWU7V0FDZixpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEEsOENBQThDOzs7OztXQ0E5QztXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7O0FDSG1CO0FBRW5CLGdFQUFNLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi8uL25vZGVfbW9kdWxlcy9Ac3lnbmFzL2pwLXNvY2lhbC1zaGFyZS9kaXN0L2VzNi9fdmlydHVhbC9fcm9sbHVwUGx1Z2luQmFiZWxIZWxwZXJzLmpzIiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyLy4vbm9kZV9tb2R1bGVzL0BzeWduYXMvanAtc29jaWFsLXNoYXJlL2Rpc3QvZXM2L2luZGV4LmpzIiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyLy4vbm9kZV9tb2R1bGVzL0BzeWduYXMvc2Nyb2xsLWFtb3VudC9kaXN0L3Njcm9sbC1hbW91bnQuZXMuanMiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvLi9ub2RlX21vZHVsZXMvQHN5Z25hcy9zY3JvbGwtaW52aWV3L2Rpc3QvZXM2L192aXJ0dWFsL19yb2xsdXBQbHVnaW5CYWJlbEhlbHBlcnMuanMiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvLi9ub2RlX21vZHVsZXMvQHN5Z25hcy9zY3JvbGwtaW52aWV3L2Rpc3QvZXM2L2luZGV4LmpzIiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyLy4vbm9kZV9tb2R1bGVzL0BzeWduYXMvdGhyb3R0bGUvZGlzdC90aHJvdHRsZS5lcy5qcyIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi8uL25vZGVfbW9kdWxlcy9Ac3lnbmFzL3Z1ZS10YWJzL2Rpc3QvdnVlLXRhYnMuZXMuanMiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvLi9zcmMvanMvcGFnZXMvY29tbW9uL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi8uL3NyYy9qcy9wYWdlcy9jb21tb24vY29tbW9uX3BvcHVwLmpzIiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyLy4vc3JjL2pzL3BhZ2VzL2NvbW1vbi9sYXp5bG9hZC5qcyIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi8uL3NyYy9qcy9wYWdlcy9jb21tb24vbG9hZGluZy5qcyIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi8uL3NyYy9qcy9wYWdlcy9jb21tb24vbG9hZGluZ19jb21wbGV0ZS5qcyIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi8uL3NyYy9qcy9wYWdlcy9jb21tb24vY2hlY2stdWEudHMiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvLi9zcmMvanMvcGFnZXMvY29tbW9uL21lZGlhcXVlcnkudHMiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvLi9zcmMvanMvcGFnZXMvY29tbW9uL21lbnUudHMiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvLi9zcmMvanMvcGFnZXMvY29tbW9uL3B
2208hZ2VzY3JvbGwudHMiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvLi9zcmMvanMvcGFnZXMvY29tbW9uL3Njcm9sbC1hbW91bnQudHMiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvLi9zcmMvanMvcGFnZXMvY29tbW9uL3Njcm9sbC1pbnZldy50cyIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi8uL3NyYy9qcy9wYWdlcy9jb21tb24vc29jaWFsLXNoYXJlLnRzIiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyLy4vc3JjL2pzL3BhZ2VzL2NvbW1vbi90YWJzLnRzIiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyLy4vbm9kZV9tb2R1bGVzL2lzLXRvdWNoLWRldmljZS9idWlsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi8uL25vZGVfbW9kdWxlcy9sYXp5c2l6ZXMvcGx1Z2lucy91bnZlaWxob29rcy9scy51bnZlaWxob29rcy5qcyIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi9kZWxlZ2F0ZWQgMTY2IGZyb20gZGxsLXJlZmVyZW5jZSB2ZW5kb3JfbGlicmFyeSIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi9kZWxlZ2F0ZWQgMiBmcm9tIGRsbC1yZWZlcmVuY2UgdmVuZG9yX2xpYnJhcnkiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvZGVsZWdhdGVkIDU4MiBmcm9tIGRsbC1yZWZlcmVuY2UgdmVuZG9yX2xpYnJhcnkiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvZGVsZWdhdGVkIDgyNCBmcm9tIGRsbC1yZWZlcmVuY2UgdmVuZG9yX2xpYnJhcnkiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvZGVsZWdhdGVkIDkwIGZyb20gZGxsLXJlZmVyZW5jZSB2ZW5kb3JfbGlicmFyeSIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi9leHRlcm5hbCB2YXIgXCJ2ZW5kb3JfbGlicmFyeVwiIiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9zaXRlX3RlbXBsYXRlXzIwMjAxMi93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3NpdGVfdGVtcGxhdGVfMjAyMDEyL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vc2l0ZV90ZW1wbGF0ZV8yMDIwMTIvLi9zcmMvanMvY29tbW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci
22085lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCB7IF9jbGFzc0NhbGxDaGVjayBhcyBjbGFzc0NhbGxDaGVjaywgX2NyZWF0ZUNsYXNzIGFzIGNyZWF0ZUNsYXNzLCBfZGVmaW5lUHJvcGVydHkgYXMgZGVmaW5lUHJvcGVydHkgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV9yb2xsdXBQbHVnaW5CYWJlbEhlbHBlcnMuanMubWFwXG4iLCJpbXBvcnQgeyBkZWZpbmVQcm9wZXJ0eSBhcyBfZGVmaW5lUHJvcGVydHksIGNyZWF0ZUNsYXNzIGFzIF9jcmVhdGVDbGFzcywgY2xhc3NDYWxsQ2hlY2sgYXMgX2NsYXNzQ2FsbENoZWNrIH0gZnJvbSAnLi9fdmlydHVhbC9fcm9sbHVwUGx1Z2luQmFiZWxIZWxwZXJzLmpzJztcblxuLyoqXG4gKiDml6XmnKzlkJHjgZHjgr3jg7zjgrfjg6Pjg6vjgrfjgqfjgqLjg5zjgr/jg7NcbiAqXG4gKiBAYXV0aG9yICAgSGlyb3NoaSBGdWt1ZGEgPGluZm8uc3lnbmFzQGdtYWlsLmNvbT5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xudmFyIEpwU29jaWFsU2hhcmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBKcFNvY2lhbFNoYXJlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBKcFNvY2lhbFNoYXJlKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhKcFNvY2lhbFNoYXJlLCBudWxsLCBbe1xuICAgIGtleTogXCJzZXRTaGFyZUJ1dHRvblwiLFxuICAgIHZhbHVlOiAvLyDjgrXjg7zjg5PjgrnlkI3orZjliKXlrZBcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIC8qKlxuICAgICAqIOOCt+OCp+OCouODnOOCv+ODs+OBruODquODs+OCr+OCkuioreWumuOBmeOCi1xuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0YXJnZXQg5a++6LGh44Oc44K/44Oz44Gu44K744Os44Kv44K/XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbiDmlrDopo/jgqbjgqPjg7Pjg4njgqbjga7jg5Hjg6njg6Hjg7zjgr/vvIhkZWZhdWx0c+WPgueFp++8iVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFNoYXJlQnV0dG9uKHRhcmdldCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIG9wdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgICAvLyDoqK3lrprjga7jg57jg7zjgrhcbiAgICAgIHRoaXMub3B0ID0gT2JqZWN0LmFzc2lnbih0aGlzLmRlZmF1bHRzLCBvcHRpb24pOyAvLyDjgq/jg6rjg4Pjgq/jgqTjg5njg7Pjg4jjgpLoqK3lrppcblxuICAgICAgdGhpcy5nZXROb2RlQXJyYXkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0YXJnZXQpKS5mb3JFYWNoKGZ1bmN0aW9uIChlbG0pIHtcbiAgICAgICAgZWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgdmFyIGVsbSA9IGV2LmN1cnJlbnRUYXJnZXQ7XG5cbiAgICAgICAgICBfdGhpcy5vcGVuU2hhcmVXaW5kb3dXaXRoRWxlbWVudChlbG0pO1xuXG4gICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog44Ko44Os44Oh44Oz44OI44GL44KJ5oOF5aCx44KS5Y+W5b6X44GX44Gm44K344Kn44Ki55So44Km44Kj44Oz44OJ44Km44KS6ZaL44GPXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJvcGVuU2hhcmVXaW5kb3dXaXRoRWxlbWVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvcGVuU2hhcmVXaW5kb3dXaXRoRWxlbWVudChlbG0pIHtcbiAgICAgIC8vIOOCqOODrOODoeODs+ODiOOBi+OCieODkeODqeODoeODvOOCv+OCkuWPluW+l1xuICAgICAgdmFyIHNlcnZpY2UgPSBlbG0uZ2V0QXR0cmlidXRlKCdkYXRhLXNoYXJlLXNlcnZpY2UnKTtcbiAgICAgIHZhciB1cmwgPSBlbG0uZ2V0QXR0cmlidXRlKCdkYXRhLXNoYXJlLXVybCcpIHx8ICcnO1xuICAgICAgdmFyIG1lc3NhZ2UgPSBlbG0uZ2V0QXR0cmlidXRlKCdkYXRhLXNoYXJlLW1lc3NhZ2UnKSB8fCBkb2N1bWVudC50aXRsZTtcbiAgICAgIHZhciBhY2NvdW50ID0gZWxtLmdldEF0dHJpYnV0ZSgnZGF0YS1zaGFyZS1hY2NvdW50JykgfHwgJyc7XG4gICAgICB2Y
2208XIgZm9sbG93ID0gZWxtLmdldEF0dHJpYnV0ZSgnZGF0YS1zaGFyZS1mb2xsb3cnKSB8fCAnJzsgLy8g44K344Kn44Ki55So44Km44Kj44Oz44OJ44Km44KS6ZaL44GPXG5cbiAgICAgIHRoaXMub3BlblNoYXJlV2luZG93KHNlcnZpY2UsIHVybCwgbWVzc2FnZSwgYWNjb3VudCwgZm9sbG93KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog44K344Kn44Ki55So44Km44Kj44Oz44OJ44Km44KS6ZaL44GPXG4gICAgICogQHBhcmFtIHNlcnZpY2Uge1N0cmluZ30g44K944O844K344Oj44Or44K144O844OT44K56K2Y5Yil5a2QXG4gICAgICogQHBhcmFtIHVybCB7U3RyaW5nfSDjgrfjgqfjgqJVUkxcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSB7U3RyaW5nfSDjg6Hjg4Pjgrvjg7zjgrjmnKzmlodcbiAgICAgKiBAcGFyYW0gYWNjb3VudCB7U3RyaW5nfSDjg4TjgqTjg7zjg4jjgavku5jjgZHjgotSZXBsZXnjgqLjgqvjgqbjg7Pjg4hcbiAgICAgKiBAcGFyYW0gZm9sbG93IHtTdHJpbmd9IOODhOOCpOODvOODiOW+jOOBq+ihqOekuuOBmeOCi+ODleOCqeODreODvOWAmeijnOOCouOCq+OCpuODs+ODiFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwib3BlblNoYXJlV2luZG93XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9wZW5TaGFyZVdpbmRvdyhzZXJ2aWNlKSB7XG4gICAgICB2YXIgdXJsID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnJztcbiAgICAgIHZhciBtZXNzYWdlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAnJztcbiAgICAgIHZhciBhY2NvdW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAnJztcbiAgICAgIHZhciBmb2xsb3cgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6ICcnO1xuXG4gICAgICAvLyDlrZjlnKjjgZfjgarjgYTjgrXjg7zjg5PjgrnjgaDjgaPjgZ/jgonjgqjjg6njg7xcbiAgICAgIGlmICh0aGlzLm9wdC5zZXJ2aWNlcyAmJiBPYmplY3Qua2V5cyh0aGlzLm9wdC5zZXJ2aWNlcykuaW5kZXhPZihzZXJ2aWNlKSA9PT0gLTEpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJcIi5jb25jYXQoc2VydmljZSwgXCIgaXMgbm90IHN1cHBvcnRlZC5cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIOODhuODs+ODl+ODrOODvOODiOOBi+OCieOCs+ODs+ODkOODvOODiFxuXG5cbiAgICAgIHZhciBvcGVuVXJsID0gdGhpcy5jb252ZXJ0T3BlblVybChzZXJ2aWNlLCB1cmwsIG1lc3NhZ2UsIGFjY291bnQsIGZvbGxvdyk7IC8vIC8vIExJTkXjga/jgqLjg5fjg6rjgavpo5vjgbDjgZnjgILjgZ3jgozku6XlpJb
2208jga/jgqbjgqPjg7Pjg4njgqbjgpLplovjgY9cbiAgICAgIC8vIGlmIChzZXJ2aWNlID09PSB0aGlzLlNFUlZJQ0VTLkxJTkUpIHtcbiAgICAgIC8vICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBvcGVuVXJsO1xuICAgICAgLy8gfSBlbHNlIGlmICh0aGlzLm9wdC53aW5kb3cpIHtcblxuICAgICAgaWYgKHRoaXMub3B0LndpbmRvdykge1xuICAgICAgICB2YXIgd2luZG93T3B0aW9uID0gdGhpcy5nZXRXaW5kb3dPcHRpb24odGhpcy5vcHQud2luZG93KTtcbiAgICAgICAgd2luZG93Lm9wZW4ob3BlblVybCwgXCJzaGFyZV9cIi5jb25jYXQoc2VydmljZSksIHdpbmRvd09wdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZygnV2luZG93IG9wdGlvbiBpcyBub3QgZGVmaW5lZC4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAvKipcbiAgICAgKiDjgrXjg7zjg5Pjgrnmr47jga5VUkzjgpLlj5blvpdcbiAgICAgKiDjg5Hjg6njg6Hjg7zjgr/jgavjgojjgaPjgabjga/liqDlt6XjgYzjgZXjgozjgotcbiAgICAgKiBAcGFyYW0gc2VydmljZSB7U3RyaW5nfSDjgr3jg7zjgrfjg6Pjg6vjgrXjg7zjg5PjgrnorZjliKXlrZBcbiAgICAgKiBAcGFyYW0gdXJsIHtTdHJpbmd9IOOCt+OCp+OColVSTFxuICAgICAqIEBwYXJhbSBtZXNzYWdlIHtTdHJpbmd9IOODoeODg+OCu+ODvOOCuOacrOaWh1xuICAgICAqIEBwYXJhbSBhY2NvdW50IHtTdHJpbmd9IOODhOOCpOODvOODiOOBq+S7mOOBkeOCi1JlcGxleeOCouOCq+OCpuODs+ODiFxuICAgICAqIEBwYXJhbSBmb2xsb3cge1N0cmluZ30g44OE44Kk44O844OI5b6M44Gr6KGo56S644GZ44KL44OV44Kp44Ot44O85YCZ6KOc44Ki44Kr44Km44Oz44OIXG4gICAgICogQHJldHVybiB7U3RyaW5nfSDjgrfjgqfjgqLnqpPjgqrjg7zjg5fjg7NVUkxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNvbnZlcnRPcGVuVXJsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbnZlcnRPcGVuVXJsKHNlcnZpY2UpIHtcbiAgICAgIHZhciB1cmwgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnO1xuICAgICAgdmFyIG1lc3NhZ2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6ICcnO1xuICAgICAgdmFyIGFjY291bnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6ICcnO1xuICAgICAgdmFyIGZvbGxvdyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogJyc7XG4gICAgICB2Y
2208XIgZXUgPSBlbmNvZGVVUklDb21wb25lbnQ7XG4gICAgICB2YXIgc2hhcmVVcmwgPSB1cmwgfHwgbG9jYXRpb24uaHJlZjtcbiAgICAgIHZhciBvcGVuVXJsID0gdGhpcy5vcHQuc2VydmljZXMgPyB0aGlzLm9wdC5zZXJ2aWNlc1tzZXJ2aWNlXSA6IFwiXCI7XG5cbiAgICAgIGlmICghb3BlblVybCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlwiLmNvbmNhdChzZXJ2aWNlLCBcIiBpcyBub3Qgc3VwcG9ydGVkLlwiKSk7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfSAvLyBUd2l0dGVy44Gg44GR44OR44Op44Oh44O844K/44Gu5YaF5a6544Gr44KI44Gj44GmVVJM44GM5aSJ44KP44KLXG5cblxuICAgICAgaWYgKHNlcnZpY2UgPT09IHRoaXMuU0VSVklDRVMuVFdJVFRFUikge1xuICAgICAgICBpZiAoIWFjY291bnQpIG9wZW5VcmwgPSBvcGVuVXJsLnJlcGxhY2UoXCImdmlhPXt7QUNDT1VOVH19XCIsIFwiXCIpO1xuICAgICAgICBpZiAoIWZvbGxvdykgb3BlblVybCA9IG9wZW5VcmwucmVwbGFjZShcIiZyZWxhdGVkPXt7Rk9MTE9XfX1cIiwgXCJcIik7XG4gICAgICB9XG5cbiAgICAgIG9wZW5VcmwgPSBvcGVuVXJsLnJlcGxhY2UoXCJ7e0FDQ09VTlR9fVwiLCBldShhY2NvdW50KSk7XG4gICAgICBvcGVuVXJsID0gb3BlblVybC5yZXBsYWNlKFwie3tGT0xMT1d9fVwiLCBldShmb2xsb3cpKTtcbiAgICAgIG9wZW5VcmwgPSBvcGVuVXJsLnJlcGxhY2UoXCJ7e01FU1NBR0V9fVwiLCBldShtZXNzYWdlKSk7XG4gICAgICBvcGVuVXJsID0gb3BlblVybC5yZXBsYWNlKFwie3tVUkx9fVwiLCBldShzaGFyZVVybCkpO1xuICAgICAgcmV0dXJuIG9wZW5Vcmw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE5vZGVMaXN044KSQXJyYXnjgajjgZfjgablj5bjgorlh7rjgZnvvIhJReWvvuetlu+8iVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Tm9kZUFycmF5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE5vZGVBcnJheShub2RlTGlzdCkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG5vZGVMaXN0LCAwKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2luZG9344OR44Op44Oh44O844K/5L2c5oiQXG4gICAgICogQHBhcmFtIG9wdCB7T2JqZWN0fSDjgqbjgqPjg7Pjg4njgqbjg5Hjg6njg6Hjg7zjgr9cbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IOaWsOimj+OCpuOCo+ODs+ODieOCpuOBruODkeODqeODoeODvOOCv+aWh+Wtl+WIl1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0V2luZG93T3B0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFdpbmRvd09wdGlvbihvcHQpIHtcbiAgICAgIHZhciBpdGVtcyA9IFtdO1xuICAgICAgT2JqZWN0LmtleXMob3B0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaXRlbXMucHVzaChcIlwiLmNvbmNhdChrZXksIFwiPVwiKS5jb25jYXQob3B0W2tleV0pKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGl0ZW1zLmpvaW4oXCIsXCIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBKcFNvY2lhbFNoYXJlO1xufSgpO1xuXG5fZGVmaW5lUHJvcGVydHkoSnBTb2NpYWxTaGFyZSwgXCJTRVJWSUNFU1wiLCB7XG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgRkFDRUJPT0s6ICdmYWNlYm9vaycsXG4gIExJTkU6ICdsaW5lJyxcbiAgRkVFRExZOiAnZmVlZGx5JyxcbiAgUE9DS0VUOiAncG9ja2V0JyxcbiAgSE
2208FURUJVOiAnaGF0ZWJ1J1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShKcFNvY2lhbFNoYXJlLCBcIm9wdFwiLCB2b2lkIDApO1xuXG5fZGVmaW5lUHJvcGVydHkoSnBTb2NpYWxTaGFyZSwgXCJkZWZhdWx0c1wiLCB7XG4gIC8vIHdpbmRvdy5vcGVuKCkg44Gu44Kq44OX44K344On44OzXG4gIHdpbmRvdzoge1xuICAgIHdpZHRoOiA1NTAsXG4gICAgaGVpZ2h0OiA0NTAsXG4gICAgcGVyc29uYWxiYXI6IDAsXG4gICAgdG9vbGJhcjogMCxcbiAgICBzY3JvbGxiYXJzOiAxLFxuICAgIHJlc2l6YWJsZTogMVxuICB9LFxuICAvLyDjgrfjgqfjgqLnlKhVUkzjga7jg4bjg7Pjg5fjg6zjg7zjg4hcbiAgc2VydmljZXM6IHtcbiAgICB0d2l0dGVyOiAnaHR0cDovL3R3aXR0ZXIuY29tL3NoYXJlP3VybD17e1VSTH19JnRleHQ9e3tNRVNTQUdFfX0mdmlhPXt7QUNDT1VOVH19JnJlbGF0ZWQ9e3tGT0xMT1d9fScsXG4gICAgZmFjZWJvb2s6ICdodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS5waHA/dT17e1VSTH19JyxcbiAgICAvLyBsaW5lOiAnbGluZTovL21zZy90ZXh0L3t7TUVTU0FHRX19IHt7VVJMfX0nLFxuICAgIGxpbmU6ICdodHRwczovL3NvY2lhbC1wbHVnaW5zLmxpbmUubWUvbGluZWl0L3NoYXJlP3VybD17e1VSTH19JyxcbiAgICBmZWVkbHk6ICdodHRwOi8vZmVlZGx5LmNvbS9pL3N1YnNjcmlwdGlvbi9mZWVkL3t7VVJMfX0nLFxuICAgIHBvY2tldDogJ2h0dHA6Ly9nZXRwb2NrZXQuY29tL2VkaXQ/dXJsPXt7VVJMfX0nLFxuICAgIGhhdGVidTogJy8vYi5oYXRlbmEubmUuanAvYWRkP21vZGU9Y29uZmlybSZ1cmw9e3tVUkx9fSZ0aXRsZT17e01FU1NBR0V9fSdcbiAgfVxufSk7XG5cbmV4cG9ydCB7IEpwU29jaWFsU2hhcmUgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwXG4iLCJpbXBvcnQgdGhyb3R0bGUgZnJvbSAnQHN5Z25hcy90aHJvdHRsZSc7XG5cbmZ1bmN0aW9uIHVud3JhcEV4cG9ydHMgKHgpIHtcblx0cmV0dXJuIHggJiYgeC5fX2VzTW9kdWxlICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh4LCAnZGVmYXVsdCcpID8geFsnZGVmYXVsdCddIDogeDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tbW9uanNNb2R1bGUoZm4sIG1vZHVsZSkge1xuXHRyZXR1cm4gbW9kdWxlID0geyBleHBvcnRzOiB7fSB9LCBmbihtb2R1bGUsIG1vZHVsZS5leHBvcnRzKSwgbW9kdWxlLmV4cG9ydHM7XG59XG5cbnZhciBfZ2xvYmFsID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSkge1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxufSk7XG5cbnZhciBfY29yZSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUpIHtcbnZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjUuMycgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG59KTtcblxudmFyIF9jb3JlXzEgPSBfY29yZS52ZXJzaW9uO1xuXG52YXIgX2FGdW5jdGlvbiA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xuXG52YXIgX2N0eCA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIF9hRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuXG52YXIgX2lzT2JqZWN0ID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuXG52YXIgX2FuT2JqZWN0ID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghX2lzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG52YXIgX2ZhaWxzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxudmFyIF9kZXNjcmlwdG9ycyA9ICFfZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG52YXIgZG9jdW1lbnQkMSA9IF9nbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IF9pc09iamVjdChkb2N1bWVudCQxKSAmJi
2208BfaXNPYmplY3QoZG9jdW1lbnQkMS5jcmVhdGVFbGVtZW50KTtcbnZhciBfZG9tQ3JlYXRlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50JDEuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cbnZhciBfaWU4RG9tRGVmaW5lID0gIV9kZXNjcmlwdG9ycyAmJiAhX2ZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfZG9tQ3JlYXRlKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG5cbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xudmFyIF90b1ByaW1pdGl2ZSA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIV9pc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhX2lzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpdC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFfaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFfaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuXG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbnZhciBmID0gX2Rlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBfYW5PYmplY3QoTyk7XG4gIFAgPSBfdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIF9hbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKF9pZThEb21EZWZpbmUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxudmFyIF9vYmplY3REcCA9IHtcblx0ZjogZlxufTtcblxudmFyIF9wcm9wZXJ0eURlc2MgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxudmFyIF9oaWRlID0gX2Rlc2NyaXB0b3JzID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gX29iamVjdERwLmYob2JqZWN0LCBrZXksIF9wcm9wZXJ0eURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBfY29yZSA6IF9jb3JlW25hbWVdIHx8IChfY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gX2dsb2JhbCA6IElTX1NUQVRJQyA/IF9nbG9iYWxbbmFtZV0gOiAoX2dsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBrZXkgaW4gZXhwb3J0cykgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gX2N0eChvdXQsIF9nbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2Y
2208XIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gX2N0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBfaGlkZShleHBQcm90bywga2V5LCBvdXQpO1xuICAgIH1cbiAgfVxufTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbnZhciBfZXhwb3J0ID0gJGV4cG9ydDtcblxudmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG52YXIgX2hhcyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciBfY29mID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG52YXIgX2lvYmplY3QgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gX2NvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbnZhciBfZGVmaW5lZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG5cbi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xuXG5cbnZhciBfdG9Jb2JqZWN0ID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBfaW9iamVjdChfZGVmaW5lZChpdCkpO1xufTtcblxuLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgX3RvSW50ZWdlciA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcbn07XG5cbi8vIDcuMS4xNSBUb0xlbmd0aFxuXG52YXIgbWluID0gTWF0aC5taW47XG52YXIgX3RvTGVuZ3RoID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4oX3RvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiQxID0gTWF0aC5taW47XG52YXIgX3RvQWJzb2x1dGVJbmRleCA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gX3RvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluJDEoaW5kZXgsIGxlbmd0aCk7XG59O1xuXG4vLyBmYWxzZSAtPiBBcnJheSNpbmRleE9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xuXG5cblxudmFyIF9hcnJheUluY2x1ZGVzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IF90b0lvYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBfdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IF90b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9I
2208HJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBfZ2xvYmFsW1NIQVJFRF0gfHwgKF9nbG9iYWxbU0hBUkVEXSA9IHt9KTtcbnZhciBfc2hhcmVkID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcbn07XG5cbnZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xudmFyIF91aWQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG52YXIgc2hhcmVkID0gX3NoYXJlZCgna2V5cycpO1xuXG52YXIgX3NoYXJlZEtleSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IF91aWQoa2V5KSk7XG59O1xuXG52YXIgYXJyYXlJbmRleE9mID0gX2FycmF5SW5jbHVkZXMoZmFsc2UpO1xudmFyIElFX1BST1RPID0gX3NoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIF9vYmplY3RLZXlzSW50ZXJuYWwgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IF90b0lvYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIF9oYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoX2hhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbnZhciBfZW51bUJ1Z0tleXMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG5cbi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxuXG5cblxudmFyIF9vYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiBfb2JqZWN0S2V5c0ludGVybmFsKE8sIF9lbnVtQnVnS2V5cyk7XG59O1xuXG52YXIgZiQxID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxudmFyIF9vYmplY3RHb3BzID0ge1xuXHRmOiBmJDFcbn07XG5cbnZhciBmJDIgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxudmFyIF9vYmplY3RQaWUgPSB7XG5cdGY6IGYkMlxufTtcblxuLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxuXG52YXIgX3RvT2JqZWN0ID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoX2RlZmluZWQoaXQpKTtcbn07XG5cbi8vIDE5LjEuMi4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UsIC4uLilcblxuXG5cblxuXG52YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxudmFyIF9vYmplY3RBc3NpZ24gPSAhJGFzc2lnbiB8fCBfZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgdmFyIFMgPSBTeW1ib2woKTtcbiAgdmFyIEsgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW1NdID0gNztcbiAgSy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoaykgeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgVCA9IF90b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDE7XG4gIHZhciBnZXRTeW1ib2xzID0gX29iamVjdEdvcHMuZjtcbiAgdmFyIGlzRW51bSA9IF9vYmplY3RQaWUuZjtcbiAgd2hpbGUgKGFMZW4gPiBpbmRleCkge1xuICAgIHZhciBTID0gX2lvYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldFN5bWJvbHMgPyBfb2JqZWN0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBfb2JqZWN0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIGlmIChpc0VudW0uY2FsbChTLCBrZXkgPSBrZXlzW2orK10pKSBUW2tleV0gPSBTW2tleV07XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjtcblxuLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSlcblxuXG5fZXhwb3J0KF9leHBvcnQuUyArIF9leHBvcnQuRiwgJ09iamVjdCcsIHsgYXNzaWduOiBfb2JqZWN0QXNzaWduIH0pO1xuXG52YXIgYXNzaWduID0gX2NvcmUuT2JqZWN0LmFzc2lnbjtcblxudmFyIGFzc2lnbiQyID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSkge1xubW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBhc3NpZ24sIF9fZXNNb2R1bGU6IHRydWUgfTtcbn0pO1xuXG52YXIgX09iamVjdCRhc3NpZ24gPSB1bndyYXBFeHBvcnRzKGFzc2lnbiQyKTtcblxudmFyIGNsYXNzQ2FsbENoZWNrID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZh
2208dWx0ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn07XG59KTtcblxudmFyIF9jbGFzc0NhbGxDaGVjayA9IHVud3JhcEV4cG9ydHMoY2xhc3NDYWxsQ2hlY2spO1xuXG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuX2V4cG9ydChfZXhwb3J0LlMgKyBfZXhwb3J0LkYgKiAhX2Rlc2NyaXB0b3JzLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogX29iamVjdERwLmYgfSk7XG5cbnZhciAkT2JqZWN0ID0gX2NvcmUuT2JqZWN0O1xudmFyIGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYykge1xuICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSQyID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSkge1xubW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBkZWZpbmVQcm9wZXJ0eSwgX19lc01vZHVsZTogdHJ1ZSB9O1xufSk7XG5cbnVud3JhcEV4cG9ydHMoZGVmaW5lUHJvcGVydHkkMik7XG5cbnZhciBjcmVhdGVDbGFzcyA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cblxuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoZGVmaW5lUHJvcGVydHkkMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci
220853cml0YWJsZSA9IHRydWU7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9O1xufSgpO1xufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSB1bndyYXBFeHBvcnRzKGNyZWF0ZUNsYXNzKTtcblxuLyoqXG4gKiBBZGQgc2Nyb2xsaW5nIHN0YXRlKHRvcCAvIG5vdC10b3AgLyBib3R0b20gLyBub3QtYm90dG9tKVxuICpcbiAqIEBhdXRob3IgICBIaXJvc2hpIEZ1a3VkYSA8aW5mby5zeWduYXNAZ21haWwuY29tPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbnZhciBBVFRSX05BTUUgPSAnZGF0YS1zY3JvbGwtYW1vdW50JztcbnZhciBBVFRSX1RPUCA9ICd0b3AnO1xudmFyIEFUVFJfQk9UVE9NID0gJ2JvdHRvbSc7XG52YXIgQVRUUl9OT1RfVE9QID0gJ25vdC10b3AnO1xudmFyIEFUVFJfTk9UX0JPVFRPTSA9ICdub3QtYm90dG9tJztcblxudmFyIF9jbGFzcyA9IGZ1bmN0aW9uICgpIHtcblxuICAgIC8qKlxuICAgICAqIOOCs+ODs+OCueODiOODqeOCr+OCv1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXQgRE9NIFNlbGVjdG9yXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBfY2xhc3ModGFyZ2V0KSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgX2NsYXNzKTtcblxuICAgICAgICB2Y
2208XIgZGVmYXVsdHMgPSB7XG4gICAgICAgICAgICAvLyDmnIDkuIrpg6jjga7jgqrjg5Xjgrvjg4Pjg4hcbiAgICAgICAgICAgIG9mZnNldF90b3A6IDcwLFxuICAgICAgICAgICAgLy8g5pyA5LiL6YOo44Gu44Kq44OV44K744OD44OIXG4gICAgICAgICAgICBvZmZzZXRfYm90dG9tOiA3MCxcbiAgICAgICAgICAgIC8vIOacgOS4iumDqOOBq+OCueOCr+ODreODvOODq+OBl+OBn+aZguOBq+Wun+ihjFxuICAgICAgICAgICAgb25Ub3A6IGZ1bmN0aW9uIG9uVG9wKCkge30sXG5cbiAgICAgICAgICAgIC8vIOacgOS4iumDqOOBi+OCiembouOCjOOBn+aZguOBq+Wun+ihjFxuICAgICAgICAgICAgb25Ob3RUb3A6IGZ1bmN0aW9uIG9uTm90VG9wKCkge30sXG5cbiAgICAgICAgICAgIC8vIOacgOS4i+mDqOOBq+OCueOCr+ODreODvOODq+OBl+OBn+aZguOBq+Wun+ihjFxuICAgICAgICAgICAgb25Cb3R0b206IGZ1bmN0aW9uIG9uQm90dG9tKCkge30sXG5cbiAgICAgICAgICAgIC8vIOacgOS4i+mDqOOBi+OCiembouOCjOOBn+aZguOBq+Wun+ihjFxuICAgICAgICAgICAgb25Ob3RCb3R0b206IGZ1bmN0aW9uIG9uTm90Qm90dG9tKCkge30sXG5cbiAgICAgICAgICAgIC8vIOeJueWumuOCqOODrOODoeODs+ODiOOBruOCueOCr+ODreODvOODq+OCkuWvvuixoeOBq+OBl+OBn+OBhFxuICAgICAgICAgICAgZWxlbWVudDogJydcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm9wdCA9IF9PYmplY3QkYXNzaWduKGRlZmF1bHRzLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHRhcmdldCk7XG4gICAgICAgIHRoaXMud2luX2hlaWdodCA9IG51bGw7IC8vIOODluODqeOCpuOCtuOCpuOCo+ODs+ODieOCpuOBrumrmOOBlVxuICAgICAgICB0aGlzLmludGVydmFsX2lkID0gbnVsbDsgLy8g44K544Kv44Ot44O844Or44Kk44OZ44Oz44OI44Gu44Kk44Oz44K/44O844OQ44Or44OB44Kn44OD44KvXG4gICAgICAgIHRoaXMucmVzdWx0cyA9IFtdOyAvLyBkYXRh5bGe5oCn44Gr5pu444GN5Ye644GZ5YaF5a65XG4gICAgICAgIHRoaXMubGFzdF9yZXN1bHRzX3N0ciA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNfc3RhcnRlZCA9IGZhbHNlOyAvLyDplovlp4vjgZfjgZ9cbiAgICAgICAgdGhpcy5pc190b3AgPSBmYWxzZTsgLy8g5LiA55Wq5LiK44Gr44K544Kv44Ot44O844Or44GX44GfXG4gICAgICAgIHRoaXMuaXNfYm90dG9tID0gZmFsc2U7IC8vIOS4gOeVquS4i+OBq+OCueOCr+ODreODvOODq+OBl+OBn1xuICAgICAgICAvLyDjgrnjgq/jg63jg7zjg6vph4/jgpLoqr/jgbnjgovjgqjjg6zjg6Hjg7Pjg4hcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5vcHQuZWxlbWVudCA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5vcHQuZWxlbWVudCkgOiBudWxsO1xuXG4gICAgICAgIHRoaXMuZXZfcmVzaXplID0gbnVsbDtcbiAgICAgICAgdGhpcy5ldl9zY3JvbGwgP
2208SBudWxsO1xuXG4gICAgICAgIC8vIOmWi+Wni1xuICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgLyoqICoqKioqKioqKioqKioqKioqKipcbiAgICAgKiBwdWJsaWNcbiAgICAgKi9cblxuICAgIC8qKlxuICAgICog44K544Kv44Ot44O844Or5qSc55+l5Yem55CG44KS6ZaL5aeLXG4gICAgKi9cblxuXG4gICAgX2NyZWF0ZUNsYXNzKF9jbGFzcywgW3tcbiAgICAgICAga2V5OiAnc3RhcnQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc3RhcnQoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgICAgICAvLyDjgZnjgafjgavplovlp4vjgZfjgabjgYTjgZ/jgonnhKHoppZcbiAgICAgICAgICAgIGlmICh0aGlzLmlzX3N0YXJ0ZWQpIHJldHVybjtcblxuICAgICAgICAgICAgLy8g44Kk44OZ44Oz44OI44Kq44OW44K444Kn44Kv44OIXG4gICAgICAgICAgICB0aGlzLmV2X3Jlc2l6ZSA9IHRocm90dGxlKDUwLCB0aGlzLl9yZXNpemUsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5ldl9zY3JvbGwgPSB0aHJvdHRsZSgxMDAsIHRoaXMuX3Njcm9sbCwgdGhpcyk7XG5cbiAgICAgICAgICAgIC8vIOODquOCteOCpOOCuuOCpOODmeODs+ODiOOBp+ODieOCreODpeODoeODs+ODiOmrmOOBleODgeOCp+ODg+OCr1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplKCk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5ldl9yZXNpemUpO1xuXG4gICAgICAgICAgICAvLyDjgrnjgq/jg63jg7zjg6vjgqTjg5njg7Pjg4hcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbCgpO1xuICAgICAgICAgICAgdGhpcy5pc19zdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmV2X3Njcm9sbCk7XG5cbiAgICAgICAgICAgIC8vIDAuNeenkumWk+avjuOBq+ODgeOCp+ODg+OCr+OCguWFpeOCjOOCi1xuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbF9pZCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fc2Nyb2xsKCk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICog44K544Kv44Ot44O844Or5qSc55+l5Yem55CG44KS5YGc5q2iXG4gICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3N0b3AnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcCgpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmV2X3Jlc2l6ZSk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5ldl9zY3JvbGwpO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKiAqKioqKioqKioqKioqKioqKioqXG4gICAgICAgICAqIHByaXZhdGVcbiAgICAgICAgICovXG5cbiAgICAgICAgLyoqXG4gICAgICAgICog44K544Kv44Ot44O844Or5Yem55CGXG4gICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19zY3JvbGwnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3Njcm9sbCgpIHtcbiAgICAgICAgICAgIHZhciBzY3JvbGxfdG9wID0gdGhpcy5lbGVtZW50ID8gdGhpcy5lbGVtZW50LnNjcm9sbFRvcCA6IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuICAgICAgICAgICAgLy8g5Yid5pyf5YyWXG4gICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSBbXTtcblxuICAgICAgICAgICAgLy8g5L2N572u44Kk44OZ44Oz44OI44Gu44OB44Kn44OD44KvXG4gICAgICAgICAgICB0aGlzLl9jaGVja190b3BfYW5kX2JvdHRvbShzY3JvbGxfdG9wKTtcblxuICAgICAgICAgICAgLy8g5bGe5oCn44KS5LuY5LiOXG4gICAgICAgICAgICB0aGlzLl9zZXRfYXR0cmlidXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICog5bGe5oCn44KS5LuY5LiOXG4gICAgICAgICAqL1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfc2V0X2F0dHJpYnV0ZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfc2V0X2F0dHJpYnV0ZSgpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRzX3N0ciA9IHRoaXMucmVzdWx0cy5qb2luKCcgJyk7XG5cbiAgICAgICAgICAgIC8vIOe1kOaenOOCkiBkYXRh5bGe5oCn44Gr5Y+N5pig44GZ44KLXG4gICAgICAgICAgICAvLyDliY3lm57jgajlkIzjgZjjgarjgonlj43mmKDjgZfjgarjgYRcbiAgICAgICAgICAgIGlmIChyZXN1bHRzX3N0ciAhPT0gdGhpcy5sYXN0X3Jlc3VsdHNfc3RyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0X3Jlc3VsdHNfc3RyID0gcmVzdWx0c19zdHI7XG4gICAgICAgICAgICAgICAgZ2V0X25vZGVfYXJyYXkodGhpcy50YXJnZXQpLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKEFUVFJfTkFNRSwgcmVzdWx0c19zdHIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICog5pyA5LiK6YOo44GL5pyA5LiL6YOo44GL44Gu44OB44Kn44OD44KvXG4gICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19jaGVja190b3BfYW5kX2JvdHRvbScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfY2hlY2tfdG9wX2FuZF9ib3R0b20oc2Nyb2xsX3RvcCkge1xuICAgICAgICAgICAgdmFyIG9wdCA9IHRoaXMub3B0O1xuICAgICAgICAgICAgdmFyIGRvY19oZWlnaHQgPSB0aGlzLmVsZW1lbnQgPyB0aGlzLmVsZW1lbnQuc2Nyb2xsSGVpZ2h0IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgIHZhciBzY3JvbGxfYm90dG9tID0gZG9jX2hlaWdodCAtIHRoaXMud2luX2hlaWdodDtcblxuICAgICAgICAgICAgLy8g5pyA5LiK6YOo44GLXG4gICAgICAgICAgICBpZiAoc2Nyb2xsX3RvcCA8PSBvcHQub2Zmc2V0X3RvcCkge1xuICAgICAgICAgICAgICAgIC8vIOODmuODvOOCuOacgOS4iumDqFxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc190b3ApIG9wdC5vblRvcCgpO1xuICAgICAgICAgICAgICAgI
2208HRoaXMuaXNfdG9wID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMucHVzaChBVFRSX1RPUCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOacgOS4iumDqOOBi+OCiembouOCjOOBn1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzX3RvcCkgb3B0Lm9uTm90VG9wKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc190b3AgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMucHVzaChBVFRSX05PVF9UT1ApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDmnIDkuIvpg6jjgYtcbiAgICAgICAgICAgIGlmIChzY3JvbGxfdG9wID49IHNjcm9sbF9ib3R0b20gLSBvcHQub2Zmc2V0X2JvdHRvbSkge1xuICAgICAgICAgICAgICAgIC8vIOODmuODvOOCuOacgOS4i+mDqFxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc19ib3R0b20pIG9wdC5vbkJvdHRvbSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNfYm90dG9tID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMucHVzaChBVFRSX0JPVFRPTSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOacgOS4i+mDqOOBi+OCiembouOCjOOBn1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzX2JvdHRvbSkgb3B0Lm9uTm90Qm90dG9tKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc19ib3R0b20gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMucHVzaChBVFRSX05PVF9CT1RUT00pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICog44Km44Kj44Oz44OJ44Km44KS44Oq44K144Kk44K644GX44Gf44KJ6auY44GV44Gq44Gp44KS44OB44Kn44OD44KvXG4gICAgICAgICovXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19yZXNpemUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3Jlc2l6ZSgpIHtcbiAgICAgICAgICAgIHRoaXMud2luX2hlaWdodCA9IHRoaXMuZWxlbWVudCA/IHRoaXMuZWxlbWVudC5jbGllbnRIZWlnaHQgOiB3aW5kb3cud2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIF9jbGFzcztcbn0oKTtcblxuZnVuY3Rpb24gZ2V0X25vZGVfYXJyYXkobm9kZV9saXN0KSB7XG4gICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG5vZGVfbGlzdCwgMCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IF9jbGFzcztcbiIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci
22085lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCB7IF9jbGFzc0NhbGxDaGVjayBhcyBjbGFzc0NhbGxDaGVjaywgX2NyZWF0ZUNsYXNzIGFzIGNyZWF0ZUNsYXNzLCBfZGVmaW5lUHJvcGVydHkgYXMgZGVmaW5lUHJvcGVydHkgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV9yb2xsdXBQbHVnaW5CYWJlbEhlbHBlcnMuanMubWFwXG4iLCJpbXBvcnQgeyBjcmVhdGVDbGFzcyBhcyBfY3JlYXRlQ2xhc3MsIGNsYXNzQ2FsbENoZWNrIGFzIF9jbGFzc0NhbGxDaGVjaywgZGVmaW5lUHJvcGVydHkgYXMgX2RlZmluZVByb3BlcnR5IH0gZnJvbSAnLi9fdmlydHVhbC9fcm9sbHVwUGx1Z2luQmFiZWxIZWxwZXJzLmpzJztcblxuLyoqXG4gKiBTY3JvbGwgaW4gdmlld3BvcnQgYWRkIGRhdGEgYXR0cmlidXRlXG4gKiDjgrnjgq/jg63jg7zjg6vjgZfjgabjg5Pjg6Xjg7zjg53jg7zjg4jjgavlhaXjgaPjgZ/jgolkYXRh5bGe5oCn44KS5LiO44GI44KLXG4gKlxuICogQGF1dGhvciAgIEhpcm9zaGkgRnVrdWRhIDxpbmZvLnN5Z25hc0BnbWFpbC5jb20+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbnZhciBBVFRSX0lOVklFVyA9ICdkYXRhLWludmlldyc7XG52YXIgQVRUUl9ST09UID0gJ2RhdGEtaW52aWV3LXJvb3QnO1xudmFyIEFUVFJfTUFSR0lOID0gJ2RhdGEtaW52aWV3LXJvb3RNYXJnaW4nO1xudmFyIEFUVFJfVEhSRVNIT0xEID0gJ2RhdGEtaW52aWV3LXRocmVzaG9sZCc7XG52YXIgREVGQVVMVCA9IHtcbiAgcm9vdDogbnVsbCxcbiAgcm9vdE1hcmdpbjogJzBweCcsXG4gIHRocmVzaG9sZDogMFxufTtcbi8qKlxuICogaW4gdmlldyBjb250cm9sbGVyXG4gKi9cblxudmFyIF9kZWZhdWx0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIOOCs+ODs+OCueODiOODqeOCr+OCv1xuICAgKiDjgr/jg7zjgrLjg4Pjg4jkuIDopqfjgpLnsr7mn7vjgZfjgabjgIEgZGF0YS1pbnZpZXctcm9vdOOAgWRhdGEtaW52aWV3LXJvb3RNYXJnaW7jgIFkYXRhLWludmlldy10aHJlc2hvbGQg44GM6Kit5a6a44GV44KM44Gm44GE44Gq44GE44GL56K66KqN44GZ44KL44CCXG4gICAqIOS4iuiomOWxnuaAp+avjuOBqyBvYnNlcnZlciDjgpLkvZzmiJDjgZnjgovjgIJcbiAgICovXG4gIGZ1bmN0aW9uIF9kZWZhdWx0KHRhcmdldCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBfZGVmYXVsdCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJvbkludmlld0Z1bmNcIiwgdW5kZWZpbmVkKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInRhcmdldExpc3RcIiwgdm9pZCAwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm9wdFwiLCB2b2lkIDApO1xuXG4gICAgdGhpcy50YXJnZXRMaXN0ID0ge307XG4gICAgdGhpcy5vcHQgPSBPYmplY3QuYXNzaWduKERFRkFVTFQsIG9wdGlvbik7XG4gICAgdGhpcy5vbkludmlld0Z1bmMgPSB1bmRlZmluZWQ7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0YXJnZXQpLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgX3RoaXMuaW5pdFRhcmdldExpc3QodGFyZ2V0KTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICog44K/44O844Ky44OD44OI44Go44Kq44OX44K344On44Oz44Gu566h55CG44Oq44K544OI44KS5L2c5oiQXG4gICAqL1xuXG5cbiAgX2NyZWF0ZUNsYXNzKF9kZWZhdWx0LCBbe1xuICAgIGtleTogXCJpbml0VGFyZ2V0TGlzdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0VGFyZ2V0TGlzdCh0YXJnZXQpIHtcbiAgICAgIC8vIOebo+imluWvvuixoeOCqOODrOODoeODs+ODiOOBq+eLrOiHquaMh+WumuOBjOOBguOCjOOBsOOBneOBoeOCieOCkuS9v+OBhuOAglxuICAgICAgLy8g54Sh44GR44KM44Gw44Kq44OX44K344On44Oz6Kit5a6a44KS5L2/44GGXG4gICAgICB2Y
2208XIgcm9vdCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoQVRUUl9ST09UKSB8fCB0aGlzLm9wdC5yb290O1xuICAgICAgdmFyIHJvb3RNYXJnaW4gPSB0YXJnZXQuZ2V0QXR0cmlidXRlKEFUVFJfTUFSR0lOKSB8fCB0aGlzLm9wdC5yb290TWFyZ2luO1xuICAgICAgdmFyIHRocmVzaG9sZCA9IE51bWJlcih0YXJnZXQuZ2V0QXR0cmlidXRlKEFUVFJfVEhSRVNIT0xEKSkgfHwgdGhpcy5vcHQudGhyZXNob2xkO1xuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KHJvb3QsIFwiLVwiKS5jb25jYXQocm9vdE1hcmdpbiwgXCItXCIpLmNvbmNhdCh0aHJlc2hvbGQpO1xuXG4gICAgICBpZiAoa2V5IGluIHRoaXMudGFyZ2V0TGlzdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdmFyIG9wdGlvbiA9IHtcbiAgICAgICAgICByb290OiByb290LFxuICAgICAgICAgIHJvb3RNYXJnaW46IHJvb3RNYXJnaW4sXG4gICAgICAgICAgdGhyZXNob2xkOiB0aHJlc2hvbGRcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMub2JzZXJ2ZXJDYWxsYmFjay5iaW5kKHRoaXMpLCBvcHRpb24pO1xuICAgICAgICB0aGlzLnRhcmdldExpc3Rba2V5XSA9IHtcbiAgICAgICAgICBsaXN0OiBbXSxcbiAgICAgICAgICBvYnNlcnZlcjogb2JzZXJ2ZXJcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50YXJnZXRMaXN0W2tleV0ubGlzdC5wdXNoKHRhcmdldCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOOCueOCr+ODreODvOODq+aknOefpeWHpueQhuOCkumWi+Wni1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RhcnQoKSB7XG4gICAgICB2Y
2208XIgX3RoaXMyID0gdGhpcztcblxuICAgICAgT2JqZWN0LmtleXModGhpcy50YXJnZXRMaXN0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHRhcmdldE9iaiA9IF90aGlzMi50YXJnZXRMaXN0W2tleV07XG4gICAgICAgIHRhcmdldE9iai5saXN0LmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICAgIHRhcmdldE9iai5vYnNlcnZlci5vYnNlcnZlKHRhcmdldCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOeUu+mdouOBq+WFpeOBo+OBn+OCiSBBVFRSX0lOVklFVyDjga5kYXRh5bGe5oCn44GrIHRydWUg44KS5YWl44KM44KL44CCXG4gICAgICog44Kq44OW44K244O844OQ44O844GL44KJ55uj6KaW6Kej6Zmk44GV44KM44KL44CCXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJvYnNlcnZlckNhbGxiYWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9ic2VydmVyQ2FsbGJhY2soZW50cmllcywgb2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgIGlmICghZW50cnkuaXNJbnRlcnNlY3RpbmcpIHJldHVybjsgLy8gaW52aWV344GX44Gf5pmC44Gr5a6f6KGM44GZ44KL5aSW6YOo6Zai5pWwXG5cbiAgICAgICAgaWYgKF90aGlzMy5vbkludmlld0Z1bmMpIHtcbiAgICAgICAgICBfdGhpczMub25JbnZpZXdGdW5jKGVudHJ5LnRhcmdldCk7XG4gICAgICAgIH1cblxuICAgICAgICBvYnNlcnZlci51bm9ic2VydmUoZW50cnkudGFyZ2V0KTtcbiAgICAgICAgZW50cnkudGFyZ2V0LnNldEF0dHJpYnV0ZShBVFRSX0lOVklFVywgJ3RydWUnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBfZGVmYXVsdDtcbn0oKTtcblxuZXhwb3J0IHsgX2RlZmF1bHQgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwXG4iLCJmdW5jdGlvbiBpbmRleCAodGltaW5nLCBmdW5jLCBzY29wZSkge1xuICAgIHZhciBpZCA9IG51bGw7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoaWQgIT09IG51bGwpIHJldHVybjtcbiAgICAgICAgZnVuYy5hcHBseShzY29wZSk7XG5cbiAgICAgICAgaWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlkID0gbnVsbDtcbiAgICAgICAgfSwgdGltaW5nKTtcbiAgICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBpbmRleDtcbiIsImltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgY29tcHV0ZWQsIG9wZW5CbG9jaywgY3JlYXRlRWxlbWVudEJsb2NrLCBub3JtYWxpemVDbGFzcywgY3JlYXRlRWxlbWVudFZOb2RlLCB1bnJlZiwgcmVuZGVyU2xvdCwgcmVmLCB3YXRjaCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgY3JlYXRlQmxvY2ssIHJlc29sdmVEeW5hbWljQ29tcG9uZW50LCB3aXRoQ3R4LCBGcmFnbWVudCwgcmVuZGVyTGlzdCwgY3JlYXRlQ29tbWVudFZOb2RlIH0gZnJvbSAndnVlJztcblxuY29uc3QgX2hvaXN0ZWRfMSQxID0gW1widGFyZ2V0XCIsIFwicmVsXCIsIFwiaHJlZlwiLCBcImRhdGEtYWN0aXZlXCJdO1xuY29uc3QgX2hvaXN0ZWRfMiA9IFtcInRhcmdldFwiLCBcInJlbFwiLCBcImhyZWZcIiwgXCJkYXRhLWFjdGl2ZVwiXTtcbmNvbnN0IF9zZmNfbWFpbiQyID0gLyogQF9fUFVSRV9fICovIGRlZmluZUNvbXBvbmVudCh7XG4gIHByb3BzOiB7XG4gICAgYWN0aXZlSWQ6IG51bGwsXG4gICAgaWQ6IG51bGwsXG4gICAgaHJlZjogbnVsbCxcbiAgICBpc0JsYW5rOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICBjbGFzc0l0ZW06IG51bGwsXG4gICAgY2xhc3NMaW5rOiBudWxsLFxuICAgIGlzTGlzdFRhZzogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgaGFuZGxDbGljazogbnVsbFxuICB9LFxuICBzZXR1cChfX3Byb3BzKSB7XG4gICAgY29uc3QgcHJvcHMgPSBfX3Byb3BzO1xuICAgIGNvbnN0IGlzQWN0aXZlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLmhyZWYpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmIChwcm9wcy5hY3RpdmVJZCA9PT0gcHJvcHMuaWQpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICAgIGNvbnN0IGNsaWNrTGluayA9IChlKSA9PiB7XG4gICAgICBpZiAocHJvcHMuaHJlZilcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBwcm9wcy5oYW5kbENsaWNrKHByb3BzLmlkKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIHJldHVybiAoX2N0eCwgX2NhY2hlKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMuaXNMaXN0VGFnID8gKG9wZW5CbG9jaygpLCBjcmVhdGVFbGVtZW50QmxvY2soXCJsaVwiLCB7XG4gICAgICAgIGtleTogMCxcbiAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKHByb3BzLmNsYXNzSXRlbSlcbiAgICAgIH0sIFtcbiAgICAgICAgY3JlYXRlRWxlbWVudFZOb2RlKFwiYVwiLCB7XG4gICAgICAgICAgdGFyZ2V0OiBwcm9wcy5pc0JsYW5rID8gXCJfYmxhbmtcIiA6IFwiXCIsXG4gICAgICAgICAgcmVsOiBwcm9wcy5pc0JsYW5rID8gXCJub29wZW5lciBub3JlZmVycmVyXCIgOiBcIlwiLFxuICAgICAgICAgIGhyZWY6IHByb3BzLmhyZWYsXG4gICAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKHByb3BzLmNsYXNzTGluayksXG4gICAgICAgICAgXCJkYXRhLWFjdGl2ZVwiOiB1bnJlZihpc0FjdGl2ZSkgPyBcInRydWVcIiA6IFwiXCIsXG4gICAgICAgICAgb25DbGljazogY2xpY2tMaW5rXG4gICAgICAgIH0sIFtcbiAgICAgICAgICByZW5kZXJTbG90KF9jdHguJHNsb3RzLCBcImRlZmF1bHRcIilcbiAgICAgICAgXSwgMTAsIF9ob2lzdGVkXzEkMSlcbiAgICAgIF0sIDIpKSA6IChvcGVuQmxvY2soKSwgY3JlYXRlRWxlbWVudEJsb2NrKFwiYVwiLCB7XG4gICAgICAgIGtleTogMSxcbiAgICAgICAgdGFyZ2V0OiBwcm9wcy5pc0JsYW5rID8gXCJfYmxhbmtcIiA6IFwiXCIsXG4gICAgICAgIHJlbDogcHJvcHMuaXNCbGFuayA/IFwibm9vcGVuZXIgbm9yZWZlcnJlclwiIDogXCJcIixcbiAgICAgICAgaHJlZjogcHJv
2208cHMuaHJlZixcbiAgICAgICAgY2xhc3M6IG5vcm1hbGl6ZUNsYXNzKHByb3BzLmNsYXNzTGluayksXG4gICAgICAgIFwiZGF0YS1hY3RpdmVcIjogdW5yZWYoaXNBY3RpdmUpID8gXCJ0cnVlXCIgOiBcIlwiLFxuICAgICAgICBvbkNsaWNrOiBjbGlja0xpbmtcbiAgICAgIH0sIFtcbiAgICAgICAgcmVuZGVyU2xvdChfY3R4LiRzbG90cywgXCJkZWZhdWx0XCIpXG4gICAgICBdLCAxMCwgX2hvaXN0ZWRfMikpO1xuICAgIH07XG4gIH1cbn0pO1xuXG5jb25zdCBFVl9DSEFOR0UgPSBcImNoYW5nZVwiO1xuY29uc3QgRVZfQ0xJQ0sgPSBcImNsaWNrXCI7XG5jb25zdCB0YWJHcm91cHMgPSByZWYoW10pO1xuY29uc3QgJF9nZXRHcm91cCA9IChncm91cElkKSA9PiB7XG4gIGNvbnN0IGdyb3VwID0gdGFiR3JvdXBzLnZhbHVlLmZpbmQoKGdyb3VwMikgPT4gZ3JvdXAyLmdyb3VwSWQgPT09IGdyb3VwSWQpO1xuICBpZiAoZ3JvdXApXG4gICAgcmV0dXJuIGdyb3VwO1xuICBjb25zdCBuZXdHcm91cCA9IHtcbiAgICBncm91cElkLFxuICAgIGFjdGl2ZUlkOiBcIlwiLFxuICAgIHRhYklkTGlzdDogW10sXG4gICAgaW50ZXJ2YWxJZDogMCxcbiAgICBldmVudHM6IG5ldyBFdmVudFRhcmdldCgpXG4gIH07XG4gIHRhYkdyb3Vwcy52YWx1ZS5wdXNoKG5ld0dyb3VwKTtcbiAgcmV0dXJuIHRhYkdyb3Vwcy52YWx1ZS5maW5kKChncm91cDIpID0+IGdyb3VwMi5ncm91cElkID09PSBncm91cElkKTtcbn07XG5mdW5jdGlvbiB1c2VUYWJDb250cm9sKGdyb3VwSWQsIGlzTWFzdGVyID0gZmFsc2UsIHVzZUhhc2ggPSBmYWxzZSkge1xuICByZXR1cm4gKCgpID0+IHtcbiAgICBjb25zdCAkX2dyb3VwID0gJF9nZXRHcm91cChncm91cElkKTtcbiAgICBjb25zdCBhY3RpdmVJZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiAkX2dyb3VwLmFjdGl2ZUlkO1xuICAgIH0pO1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuICRfZ3JvdXAudGFiSWRMaXN0LmluZGV4T2YoJF9ncm91cC5hY3RpdmVJZCk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0QWN0aXZlSWQgPSAoYWN0aXZlSWQyLCBpc1RhYkNsaWNrID0gZmFsc2UpID0+IHtcbiAgICAgICRfZ3JvdXAuYWN0aXZlSWQgPSBhY3RpdmVJZDI7XG4gICAgICBpZiAoaXNUYWJDbGljaykge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudChFVl9DTElDSywgeyBkZXRhaWw6IGFjdGl2ZUlkMiB9KTtcbiAgICAgICAgJF9ncm91cC5ldmVudHMuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBzZXRUYWJJZExpc3QgPSAoaWRMaXN0KSA9PiB7XG4gICAgICAkX2dyb3VwLnRhYklkTGlzdCA9IGlkTGlzdDtcbiAgICB9O1xuICAgIGNvbnN0IGNoYW5nZU5leHRUYWIgPSAoKSA9PiB7XG4gICAgICBjb25zdCBuZXh0SW5kZXggPSAoYWN0aXZlSW5kZXgudmFsdWUgKyAxKSAlICRfZ3JvdXAudGFiSWRMaXN0Lmxlbmd0aDtcbiAgICAgIHNldEFjdGl2ZUlkKCRfZ3JvdXAudGFiSWRMaXN0W25leHRJbmRleF0pO1xuICAgIH07XG4gICAgY29uc3QgY2hhbmdlUHJldlRhYiA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gYWN0aXZlSW5kZXgudmFsdWUgLSAxO1xuICAgICAgY29uc3QgcHJldkluZGV4ID0gaW5kZXggPD0gLTEgPyAkX2dyb3VwLnRhYklkTGlzdC5sZW5ndGggLSAxIDogaW5kZXg7XG4gICAgICBzZXRBY3RpdmVJZCgkX2dyb3VwLnRhYklkTGlzdFtwcmV2SW5kZXhdKTtcbiAgICB9O1xuICAgIGNvbnN0IGFkZENoYW5nZUxpc3RlbmVyID0gKGZ1bmMpID0+IHtcbiAgICAgICRfZ3JvdXAuZXZlbnRzLmFkZEV2ZW50TGlzdGVuZXIoRVZfQ0hBTkdFLCBmdW5jKTtcbiAgICB9O1xuICAgIGNvbnN0IGFkZENsaWNrTGlzdGVuZXIgPSAoZnVuYykgPT4ge1xuICAgICAgJF9ncm91cC5ldmVudHMuYWRkRXZlbnRMaXN0ZW5lcihFVl9DTElDSywgZnVuYyk7XG4gICAgfTtcbiAgICBjb25zdCBzdGFydEF1dG9DaGFuZ2UgPSAodGltZSkgPT4ge1xuICAgICAgJF9ncm91cC5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBjaGFuZ2VOZXh0VGFiKCk7XG4gICAgICB9LCB0aW1lKTtcbiAgICB9O1xuICAgIGNvbnN0IHN0b3BBdXRvQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgY2xlYXJJbnRlcnZhbCgkX2dyb3VwLmludGVydmFsSWQpO1xuICAgIH07XG4gICAgd2F0Y2goYWN0aXZlSWQsICgpID0+IHtcbiAgICAgIGlmIChpc01hc3Rlcikge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudChFVl9DSEFOR0UsIHsgZGV0YWlsOiBhY3RpdmVJZC52YWx1ZSB9KTtcbiAgICAgICAgJF9ncm91cC5ldmVudHMuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICB9XG4gICAgICBpZiAodXNlSGFzaCAmJiBpc01hc3Rlcikge1xuICAgICAgICBsb2NhdGlvbi5oYXNoID0gYWN0aXZlSWQudmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZUlkLFxuICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICBzZXRBY3RpdmVJZCxcbiAgICAgIHNldFRhYklkTGlzdCxcbiAgICAgIGNoYW5nZU5leHRUYWIsXG4gICAgICBjaGFuZ2VQcmV2VGFiLFxuICAgICAgc3RhcnRBdXRvQ2hhbmdlLFxuICAgICAgc3RvcEF1dG9DaGFuZ2UsXG4gICAgICBhZGRDaGFuZ2VMaXN0ZW5lcixcbiAgICAgIGFkZENsaWNrTGlzdGVuZXJcbiAgICB9O1xuICB9KSgpO1xufVxuXG5jb25zdCBfaG9pc3RlZF8xID0gW1wiaW5uZXJIVE1MXCJdO1xuY29uc3QgX3NmY19tYWluJDEgPSAvKiBAX19QVVJFX18gKi8gZGVmaW5lQ29tcG9uZW50KHtcbiAgcHJvcHM6IHtcbiAgICBncm91cDogbnVsbCxcbiAgICBkZWZhdWx0OiB7IGRlZmF1bHQ6IFwiXCIgfSxcbiAgICBpdGVtczogbnVsbCxcbiAgICB1c2VIYXNoOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgaXNMaXN0VGFnOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgYXV0bzogbnVsbCxcbiAgICBpc1N0b3BBdXRvOiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICBjbGFzc1RhYnM6IHsgZGVmYXVsdDogXCJjLXRhYm1lbnVcIiB9LFxuICAgIGNsYXNzSXRlbTogeyBkZWZhdWx0OiBcImMtdGFibWVudV9faXRlbVwiIH0sXG4gICAgY2xhc3NMaW5rOiB7IGRlZmF1bHQ6IFwiYy10YWJtZW51X19saW5rXCIgfVxuICB9LFxuICBzZXR1cChfX3Byb3BzKSB7XG4gICAgY29uc3QgcHJvcHMgP
2208SBfX3Byb3BzO1xuICAgIGNvbnN0IHRhYkNvbnRyb2wgPSB1c2VUYWJDb250cm9sKHByb3BzLmdyb3VwLCB0cnVlLCBwcm9wcy51c2VIYXNoKTtcbiAgICBjb25zdCBpdGVtQ2xpY2tlZCA9IChpZCkgPT4ge1xuICAgICAgaWYgKGlkID09PSB0YWJDb250cm9sLmFjdGl2ZUlkLnZhbHVlKVxuICAgICAgICByZXR1cm47XG4gICAgICB0YWJDb250cm9sLnNldEFjdGl2ZUlkKGlkLCB0cnVlKTtcbiAgICAgIGlmIChwcm9wcy5pc1N0b3BBdXRvKSB7XG4gICAgICAgIHRhYkNvbnRyb2wuc3RvcEF1dG9DaGFuZ2UoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBpZExpc3QgPSBwcm9wcy5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQpLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCk7XG4gICAgICB0YWJDb250cm9sLnNldFRhYklkTGlzdChpZExpc3QpO1xuICAgICAgaWYgKHByb3BzLnVzZUhhc2ggJiYgbG9jYXRpb24uaGFzaCkge1xuICAgICAgICB0YWJDb250cm9sLnNldEFjdGl2ZUlkKGxvY2F0aW9uLmhhc2guc3Vic3RyKDEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYkNvbnRyb2wuc2V0QWN0aXZlSWQocHJvcHMuZGVmYXVsdCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuYXV0byAmJiBwcm9wcy5hdXRvID49IDEpIHtcbiAgICAgICAgdGFiQ29udHJvbC5zdGFydEF1dG9DaGFuZ2UocHJvcHMuYXV0byk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgICAgdGFiQ29udHJvbC5zdG9wQXV0b0NoYW5nZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiAoX2N0eCwgX2NhY2hlKSA9PiB7XG4gICAgICByZXR1cm4gb3BlbkJsb2NrKCksIGNyZWF0ZUJsb2NrKHJlc29sdmVEeW5hbWljQ29tcG9uZW50KHByb3BzLmlzTGlzdFRhZyA/IFwidWxcIiA6IFwiZGl2XCIpLCB7XG4gICAgICAgIGNsYXNzOiBub3JtYWxpemVDbGFzcyhwcm9wcy5jbGFzc1RhYnMpXG4gICAgICB9LCB7XG4gICAgICAgIGRlZmF1bHQ6IHdpdGhDdHgoKCkgPT4gW1xuICAgICAgICAgIChvcGVuQmxvY2sodHJ1ZSksIGNyZWF0ZUVsZW1lbnRCbG9jayhGcmFnbWVudCwgbnVsbCwgcmVuZGVyTGlzdChwcm9wcy5pdGVtcywgKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gb3BlbkJsb2NrKCksIGNyZWF0ZUJsb2NrKF9zZmNfbWFpbiQyLCB7XG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICBrZXk6IGluZGV4LFxuICAgICAgICAgICAgICBcImFjdGl2ZS1pZFwiOiB1bnJlZih0YWJDb250cm9sKS5hY3RpdmVJZC52YWx1ZSxcbiAgICAgICAgICAgICAgaHJlZjogaXRlbS5ocmVmIHx8IFwiXCIsXG4gICAgICAgICAgICAgIFwiaXMtYmxhbmtcIjogaXRlbS5pc0JsYW5rIHx8IGZhbHNlLFxuICAgICAgICAgICAgICBcImNsYXNzLWl0ZW1cIjogcHJvcHMuY2xhc3NJdGVtLFxuICAgICAgICAgICAgICBcImNsYXNzLWxpbmtcIjogcHJvcHMuY2xhc3NMaW5rLFxuICAgICAgICAgICAgICBcImlzLWxpc3QtdGFnXCI6IHByb3BzLmlzTGlzdFRhZyxcbiAgICAgICAgICAgICAgXCJoYW5kbC1jbGlja1wiOiBpdGVtQ2xpY2tlZFxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICBkZWZhdWx0OiB3aXRoQ3R4KCgpID0+IFtcbiAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50Vk5vZGUoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgIGlubmVySFRNTDogaXRlbS52YWx1ZVxuICAgICAgICAgICAgICAgIH0sIG51bGwsIDgsIF9ob2lzdGVkXzEpXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICBfOiAyXG4gICAgICAgICAgICB9LCAxMDMyLCBbXCJpZFwiLCBcImFjdGl2ZS1pZFwiLCBcImhyZWZcIiwgXCJpcy1ibGFua1wiLCBcImNsYXNzLWl0ZW1cIiwgXCJjbGFzcy1saW5rXCIsIFwiaXMtbGlzdC10YWdcIl0pO1xuICAgICAgICAgIH0pLCAxMjgpKVxuICAgICAgICBdKSxcbiAgICAgICAgXzogMVxuICAgICAgfSwgOCwgW1wiY2xhc3NcIl0pO1xuICAgIH07XG4gIH1cbn0pO1xuXG5jb25zdCBfc2ZjX21haW4gPSAvKiBAX19QVVJFX18gKi8gZGVmaW5lQ29tcG9uZW50KHtcbiAgcHJvcHM6IHtcbiAgICBncm91cDogbnVsbCxcbiAgICB0YWJJZDogbnVsbCxcbiAgICB0YWc6IHsgZGVmYXVsdDogXCJkaXZcIiB9XG4gIH0sXG4gIHNldHVwKF9fcHJvcHMpIHtcbiAgICBjb25zdCBwcm9wcyA9IF9fcHJvcHM7XG4gICAgY29uc3QgdGFiQ29udHJvbCA9IHVzZVRhYkNvbnRyb2wocHJvcHMuZ3JvdXApO1xuICAgIHJldHVybiAoX2N0eCwgX2NhY2hlKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMudGFiSWQgPT09IHVucmVmKHRhYkNvbnRyb2wpLmFjdGl2ZUlkLnZhbHVlID8gKG9wZW5CbG9jaygpLCBjcmVhdGVCbG9jayhyZXNvbHZlRHluYW1pY0NvbXBvbmVudChwcm9wcy50YWcpLCB7IGtleTogMCB9LCB7XG4gICAgICAgIGRlZmF1bHQ6IHdpdGhDdHgoKCkgPT4gW1xuICAgICAgICAgIHJlbmRlclNsb3QoX2N0eC4kc2xvdHMsIFwiZGVmYXVsdFwiKVxuICAgICAgICBdKSxcbiAgICAgICAgXzogM1xuICAgICAgfSkpIDogY3JlYXRlQ29tbWVudFZOb2RlKFwiXCIsIHRydWUpO1xuICAgIH07XG4gIH1cbn0pO1xuXG5leHBvcnQgeyBfc2ZjX21haW4kMSBhcyBWdWVUYWJzLCBfc2ZjX21haW4gYXMgVnVlVGFic0NvbnRlbnQsIHVzZVRhYkNvbnRyb2wgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZ1ZS10YWJzLmVzLmpzLm1hcFxuIiwiLy8g5YWo44Oa44O844K45YWx6YCa5Yem55CGXG5cbi8qIGVzbGludCBuby11bnVzZWQtdmFyczpvZmYgKi9cbi8qIGVzbGludCBuby1jb25zb2xlOm9mZiAqL1xuXG4vLyDnlLvlg4/jga7pgYXlu7boqq3jgb/ovrzjgb9cbmltcG9ydCBsYXp5bG9hZCBmcm9tICcuL2xhenlsb2FkJztcbi8vIOODoeODh+OCo+OCouOCr+OCqOODquODvOeuoeeQhlxuaW1wb3J0IG1lZGlhcXVlcnkgZnJvbSAnLi9tZWRpYXF1ZXJ5Jztcbi8vIOODpuODvOOCtuODvOOCqOODvOOCuOOCp+ODs+ODiOWIpOWumlxuaW1wb3J0IGNoZWNrX3VhIGZyb20gJy4vY2hlY2stdWEnO1xuLy8g44Oa44O844K45YaF44K544Kv44Ot44O844OrXG5pbXBvcnQgcGFnZXNjcm9sbCBmcm9tICcuL3BhZ2VzY3JvbGwnO
22081xuLy8g55S76Z2i5L2N572u44Gr5b+c44GY44Gf44GmIGRhdGEg5bGe5oCn5aSJ5YyW44CC44Oa44O844K444OI44OD44OX5oi744KL44Oc44K/44Oz44Gq44GpXG5pbXBvcnQgc2Nyb2xsX2Ftb3VudCBmcm9tICcuL3Njcm9sbC1hbW91bnQnO1xuLy8g44K944O844K344Oj44Or44K344Kn44Ki44Oc44K/44OzXG5pbXBvcnQgc29jaWFsX3NoYXJlIGZyb20gJy4vc29jaWFsLXNoYXJlJztcbi8vIOODneODg+ODl+OCouODg+ODl1xuaW1wb3J0IHBvcHVwIGZyb20gJy4vY29tbW9uX3BvcHVwJztcbi8vIOOCquODvOODh+OCo+OCquWGjeeUn+ODnOOCv+ODs1xuLy8gaW1wb3J0IGF1ZGlvIGZyb20gJy4vY29tbW9uX2F1ZGlvJztcbi8vIOODoeOCpOODs+ODoeODi+ODpeODvFxuaW1wb3J0IG1lbnUgZnJvbSAnLi9tZW51Jztcbi8vIOODmuODvOOCuOiqreOBv+i+vOOBv1xuaW1wb3J0IGxvYWRpbmcgZnJvbSAnLi9sb2FkaW5nJztcbi8vIOODmuODvOOCuOiqreOBv+i+vOOBv+WujOS6hlxuaW1wb3J0IGxvYWRpbmdfY29tcGxldGUgZnJvbSAnLi9sb2FkaW5nX2NvbXBsZXRlJztcbi8vIOWFsemAmuOBruOCv+ODllxuaW1wb3J0IHRhYnMgZnJvbSAnLi90YWJzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBsYXp5bG9hZCgpO1xuICBtZWRpYXF1ZXJ5KCk7XG4gIGNoZWNrX3VhKCk7XG4gIHBhZ2VzY3JvbGwoKTtcbiAgc2Nyb2xsX2Ftb3VudCgpO1xuICBzb2NpYWxfc2hhcmUoKTtcbiAgbWVudSgpO1xuICBwb3B1cCgpO1xuICAvLyBhdWRpbygpO1xuICB0YWJzKCk7XG4gIGxvYWRpbmcoKS50aGVuKGxvYWRpbmdfY29tcGxldGUpO1xufVxuIiwiLyoqXG4gKiBmYW5jeWJveDMg44KS5L2/44Gj44Gf44Od44OD44OX44Ki44OD44OXXG4gKiBodHRwOi8vdXp1cmVhLm5ldC9leHBsYW5hdGlvbi1vZi1mYW5jeWJveDMvXG4gKi9cblxuaW1wb3J0IGxhenlsb2FkIGZyb20gJy4vbGF6eWxvYWQnO1xuXG5jb25zdCBjbG9zZUJ1dHRvbiA9XG4gICc8YnV0dG9uIGRhdGEtZmFuY3lib3gtY2xvc2UgY2xhc3M9XCJmYW5jeWJveC1idXR0b24gZmFuY3lib3gtYnV0dG9uLS1jbG9zZVwiIHRpdGxlPVwie3tDTE9TRX19XCI+PGkgY2xhc3M9XCJpLWFycm93cy10aW1lcy0xXCI+PC9pPjwvYnV0dG9uPic7XG5cbi8vIOeUu+WDj+OChFlvdXR1YmVcbi8vIDxhIGhyZWY9XCJ5b3V0dWJlIHVybFwiIGRhdGEtZmFuY3lib3g+XG5leHBvcnQgY29uc3QgTk9STUFMX1NFVFRJTkdTID0ge1xuICBtYWluQ2xhc3M6ICcnLFxuICBkcmFnVG9DbG9zZTogZmFsc2UsXG4gIHRwbDogeyBjbG9zZUJ1dHRvbiB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEFKQVhfU0VUVElOR1MgPSB7XG4gIHR5cGU6ICdhamF4JyxcbiAgaW5mb2JhcjogZmFsc2UsXG4gIHRvb2xiYXI6IHRydWUsXG4gIGJ1dHRvbnM6IFsnY2xvc2UnXSxcbiAgYnRuVHBsOiB7XG4gICAgY2xvc2U6IGNsb3NlQnV0dG9uLFxuICB9LFxuICBzbWFsbEJ0bjogZmFsc2UsXG4gIGJlZm9yZVNob3c6IChpbnN0YW5jZSwgY3VycmVudCkgPT4ge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gY3VycmVudC5zcmM7XG4gIH0sXG4gIGFmdGVyU2hvdzogKCkgPT4ge1xuICAgIGxhenlsb2FkKCk7XG4gIH0sXG4gIGJlZm9yZUNsb3NlOiAoKSA9PiB7XG4gICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnJztcbiAgfSxcbn07XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICAkKCdbZGF0YS1mYW5jeWJveF0nKS5mYW5jeWJveCh7XG4gICAgaW5mb2JhcjogZmFsc2UsXG4gICAgdG9vbGJhcjogdHJ1ZSxcbiAgICBidXR0b25zOiBbJ2Nsb3NlJ10sXG4gICAgYnRuVHBsOiB7XG4gICAgICBjbG9zZTpcbiAgICAgICAgJzxidXR0b24gZGF0YS1mYW5jeWJveC1jbG9zZSBjbGFzcz1cImZhbmN5Ym94LWJ1dHRvbiBmYW5jeWJveC1idXR0b24tLWNsb3NlXCIgdGl0bGU9XCJ7e0NMT1NFfX1cIj48aSBjbGFzcz1cImktYXJyb3dzLXRpbWVzLTFcIj48L2k+PC9idXR0b24+JyxcbiAgICB9LFxuICB9KTtcblxuICAkKCdbZGF0YS1mYW5jeWJveC1hamF4XScpLmZhbmN5Ym94KEFKQVhfU0VUVElOR1MpO1xufVxuIiwiLyoqXG4gKiDnlLvlg4/jga7pgYXlu7boqq3jgb/ovrzjgb9cbiAqIGh0dHBzOi8vbm90ZXMuc2hhcmVzbC5uZXQvYXJ0aWNsZXMvMTI3MS9cbiAqXG4gKiA8aW1nIHNyYz1cImR1bW15LnBuZ1wiIGRhdGEtc3JjPVwiaG9nZS5qcGdcIiBjbGFzcz1cImpzLWxhenlcIj5cbiAqIGRhdGEtc3JjIOWxnuaAp+OBq+mBheW7tuiqreOBv+i+vOOBv+OBleOBm+OBn+OBhOeUu+WDj+OCkuaMh+WumuOBmeOCi+OAglxuICpcbiAqIGRhdGEtc3JjIDogc3Jj44Gr44K744OD44OI44GV44KM44KLXG4gKiBkYXRhLXNyY3NldCA6IHNyY3NldOOBq+OCu+ODg+ODiOOBleOCjOOCi1xuICogZGF0YS1iZyA6IGJhY2tncm91bmRJbWFnZeOBq+OCu+ODg+ODiOOBleOCjOOCi1xuXG4gKi9cblxuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOm9mZiAqL1xuLyogZXNsaW50IEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyczpvZmYgKi9cblxuaW1wb3J0IGxhenlTaXplcyBmcm9tICdsYXp5c2l6ZXMnO1xuaW1wb3J0IHVudmVpbGhvb2tzIGZyb20gJ2xhenlzaXplcy9wbHVnaW5zL3VudmVpbGhvb2tzL2xzLnVudmVpbGhvb2tzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBsYXp5U2l6ZXMuY2ZnLmxhenlDbGFzcyA9ICdqcy1sYXp5Jztcbn1cbiIsIi8qKlxuICog44Oa44O844K46Kqt44G/6L6844G/44OX44Ot44Kw44Os44K544OQ44O8XG4gKi9cblxuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOm9mZiAqL1xuLyogZXNsaW50IEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyczpvZmYgKi9cblxuaW1wb3J0IHByZWxvYWRlciBmcm9tICdwcmVsb2FkZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoYWRkX3VybHMgPSBbXSkge1xuICAvLyDjg5fjg63jgrDjg6zjgrnjg5Djg7zjgqjjg6zjg6Hjg7Pjg4hcbiAgY29uc3QgJHByb2dyZXNzX2JhciA9ICQoJy5qcy1sb2FkaW5nLXByb2dyZXNzJyk7XG4gIC8vIOODl+ODquODreODvOODgOODvFxuICBjb25zdCBsb2FkZXIgPSBwcmVsb2FkZXIoeyB4aHJJbWFnZXM6IGZhbHNlIH0pO1xuXG4gIC8vIHVybOODquOCueODiOS9nOaIkFxuICBjb25zdCBpbWFnZV91cmxzID0gZ2V0X2ltYWdlX2xpc3QoKTtcbiAgY29uc3QgdXJscyA9IE9iamVjdC5hc3NpZ24oaW1hZ2VfdXJscywgYWRkX3VybHMpO1xuXG4gIC8vIFByb21pc2XjgpLov5TjgZlcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyDjg5fjg6rjg63jg7zjg4Djg7zjgavnmbvpjLJcbiAgICB1cmxzLmZvckVhY2goKHVybCkgPT4ge1xuICAgICAgbG9hZGVyLmFkZCh1cmwpO1xuICAgIH0pO1xuXG4gICAgLy8g6Kqt44G/6L6844G/5Lit77ya44OQ44O844Ko44Os44Oh44Oz44OI44Gu5bmF6Kq/5pW0XG4gICAgbG9hZGVyLm9uKCdwcm9ncmVzcycsIChwZXJjZW50LCB1cmwpID0+IHtcbiAgICAgICRwcm9ncmVzc19iYXIuY3NzKHsgd2lkdGg6IGAke3BlcmNlbnQgKiAxMDB9JWAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyDoqq3jgb/ovrzjgb/lrozkuoZcbiAgICAvLyDoqq3jgb/ovrzjgb/lrozkuobpgJr
2208nn6XjgIHjg5fjg63jgrDjg6zjgrnjgqjjg6zjg6Hjg7Pjg4jjgpLluYUxMDAl44Gr44GZ44KLXG4gICAgbG9hZGVyLm9uKCdjb21wbGV0ZScsICgpID0+IHtcbiAgICAgICRwcm9ncmVzc19iYXIuY3NzKHsgd2lkdGg6ICcxMDAlJyB9KTtcbiAgICAgICQod2luZG93KS50cmlnZ2VyKCdwYWdlX2xvYWRfY29tcGxldGUnKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcblxuICAgIC8vIOiqreOBv+i+vOOBv+mWi+Wni1xuICAgIGxvYWRlci5sb2FkKCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIDxpbWc+IOOCkuODgeOCp+ODg+OCr+OBmeOCi1xuICogQHJldHVybiB1cmxzIHtBcnJheX0gVVJM44Gu6YWN5YiXXG4gKi9cbmZ1bmN0aW9uIGdldF9pbWFnZV9saXN0KCkge1xuICBjb25zdCBob3N0bmFtZSA9IC9eaHR0cHM/OlxcL1xcL1teL10rXFwvLy5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKVswXTtcbiAgY29uc3QgaW1hZ2VzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpO1xuICBjb25zdCB1cmxzID0gW107XG5cbiAgLy8gPGltZz7jgr/jgrDjgpLlhajjgabjg4Hjgqfjg4Pjgq9cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbWFnZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCBzcmMgPSBpbWFnZXNbaV0uc3JjO1xuICAgIC8vIOmBleOBhuODm+OCueODiOOBruOCguOBruOBr+W8vuOBj1xuICAgIGlmIChzcmMuaW5kZXhPZihob3N0bmFtZSkgPT09IDApIHtcbiAgICAgIHVybHMucHVzaChzcmMpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdXJscztcbn1cbiIsIi8qKlxuICog44Oa44O844K46Kqt44G/6L6844G/44GM57WC44KP44Gj44Gf5b6M44Gu5Yem55CGXG4gKi9cblxuLy8g44K544Kv44Ot44O844Or5qSc55+l6KGo56S6XG5pbXBvcnQgaW52aWV3IGZyb20gJy4vc2Nyb2xsLWludmV3JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBzZXRUaW1lb3V0KGZhZGVpbiwgMjAwKTtcbiAgc2V0VGltZW91dChyZW1vdmVfZmFkZWluLCAxMjAwKTtcbiAgc2V0VGltZW91dChpbnZpZXcsIDEyMDApO1xufVxuXG4vKipcbiAqIOODleOCp+ODvOODieOCpOODs+OBleOBm+OCi1xuICovXG5mdW5jdGlvbiBmYWRlaW4oKSB7XG4gICQoJy5qcy1mYWRlaW4nKS5hdHRyKCdkYXRhLXByb2dyZXNzLWZpbmlzaCcsICd0cnVlJyk7XG4gIC8vICQoJy5qcy1sb2FkaW5nJykuYXR0cignZGF0YS1sb2FkaW5nLWZpbmlzaCcsICd0cnVlJyk7XG4gIC8vIC8vIOODleOCp+ODvOODieOCpOODs+OCpOODmeODs+ODiOOBrumAmuefpVxuICAvLyAkKHdpbmRvdykudHJpZ2dlcigncGFnZV9mYWRlaW4nKTtcbn1cblxuLyoqXG4gKiDjg5Xjgqfjg7zjg4njgqTjg7Pjgqjjg6zjg6Hjg7Pjg4jjgpLliYrpmaRcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlX2ZhZGVpbigpIHtcbiAgJCgnLmpzLWZhZGVpbicpLnJlbW92ZSgpO1xufVxuIiwiLyoqXG4gKiDjg6bjg7zjgrbjg7zjgqjjg7zjgrjjgqfjg7Pjg4jnorroqo1cbiAqIE9T44KS6KaL44Gm44K544Oe44Ob57O744Gg44Go5Yik5a6a44GX44Gf44KJIDxib2R5IGRhdGEtaXMtbW9iaWxlPVwidHJ1ZVwiPiDjgpLoqK3lrprjgZnjgotcbiAqIFBD44Gg44Go5Yik5a6a44GX44Gf44KJIDxib2R5IGRhdGEtaXMtbW9iaWxlPVwiZmFsc2VcIj4g44KS6Kit5a6aXG4gKi9cblxuaW1wb3J0IGlzVG91Y2hEZXZpY2UgZnJvbSAnaXMtdG91Y2gtZGV2aWNlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBpZiAoaXNUb3VjaERldmljZSgpKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ2RhdGEtaXMtbW9iaWxlJywgJ3RydWUnKTtcbiAgfSBlbHNlIHtcbiAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgnZGF0YS1pcy1tb2JpbGUnLCAnZmFsc2UnKTtcbiAgfVxufVxuIiwiLyoqXG4gKiDjg6Hjg4fjgqPjgqLjgq/jgqjjg6rjg7zjgpLnrqHnkIZcbiAqL1xuXG5pbXBvcnQgTWVkaWFxdWVyeSBmcm9tICdAc3lnbmFzL21lZGlhcXVlcnknO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIC8vIE1lZGlhcXVlcnkuYWRkTWVkaWEoJ3BjJywgJ3NjcmVlbiBhbmQgKG1pbi13aWR0aDogODUxcHgpJyk7XG4gIC8vIE1lZGlhcXVlcnkuYWRkTWVkaWEoJ3RiJywgJ3NjcmVlbiBhbmQgKG1pbi13aWR0aDogNTUxcHgpIGFuZCAobWF4LXdpZHRoOiA4NTBweCknKTtcbiAgLy8gTWVkaWFxdWVyeS5hZGRNZWRpYSgndGItbG8nLCAnc2NyZWVuIChtYXgtd2lkdGg6IDg1MHB4KScpO1xuICAvLyBNZWRpYXF1ZXJ5LmFkZE1lZGlhKCdzcC11cCcsICdzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU1MXB4KScpO1xuICAvLyBNZWRpYXF1ZXJ5LmFkZE1lZGlhKCdzcCcsICdzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU1MHB4KScpO1xuXG4gIE1lZGlhcXVlcnkuYWRkTWVkaWEoJ3BjJywgJ3NjcmVlbiBhbmQgKG1pbi13aWR0aDogODAxcHgpJyk7XG4gIE1lZGlhcXVlcnkuYWRkTWVkaWEoJ3NwJywgJ3NjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpJyk7XG59XG4iLCIvKipcbiAqIOODoeOCpOODs+ODoeODi+ODpeODvFxuICovXG5jb25zdCBnZXRIYW1idXJnZXIgPSAoKSA9PiB7XG4gIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtaGFtYnVyZ2VyJykgYXMgSFRNTEVsZW1lbnQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIC8vIOOCr+ODquODg+OCr+OBpyBkYXRhLWhhbWJ1cmdlci1vcGVuID0gXCJ0cnVlXCIg44Gr44GZ44KLXG4gIGNvbnN0ICRoYW1idXJnZXIgPSAkKCcuanMtaGFtYnVyZ2VyJyk7XG5cbiAgLy8g44OP44Oz44OQ44O844Ks44O844Oc44K/44Oz44Gu44Kv44Oq44OD44Kv44Gn44Oh44OL44Ol44O844Gu6ZaL6ZaJXG4gICRoYW1idXJnZXIub24oJ2NsaWNrJywgdG9nZ2xlX21lbnUpO1xuXG4gIC8vIOODoeODi+ODpeODvOOBruODnOOCv+ODs+OCkuaKvOOBl+OBpuOCgumWi+mWieOBmeOCi1xuICAkKCcuYy1tYWlubWVudSBhLmpzLXBhZ2VzY3JvbGwnKS5vbignY2xpY2snLCB0b2dnbGVfbWVudSk7XG5cbiAgLy8g44K144OW44Oh44OL44Ol44O86ZaL6ZaJXG4gICQoJy5qcy1oYXMtc3VibWVudScpLm9uKCdjbGljaycsIHRvZ2dsZV9zdWJtZW51KTtcbn1cblxuLyoqXG4gKiDjg6Hjg4vjg6Xjg7zjgpLplovplonjgZnjgotcbiAqIEBwYXJhbSB7RXZlbn
2208R9IGV2IOOCr+ODquODg+OCr+OCpOODmeODs+ODiFxuICovXG5mdW5jdGlvbiB0b2dnbGVfbWVudShldikge1xuICAvLyDjg4/jg7Pjg5Djg7zjgqzjg7zjg6Hjg4vjg6Xjg7zjga7liIfjgormm7/jgYhcbiAgY29uc3QgaGFtYnVyZ2VyID0gZ2V0SGFtYnVyZ2VyKCk7XG4gIGNvbnN0IHN0YXRlID0gaGFtYnVyZ2VyPy5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGFtYnVyZ2VyLW9wZW4nKTtcbiAgY29uc3QgaXNfb3BlbiA9IHN0YXRlID09PSAndHJ1ZScgPyAnZmFsc2UnIDogJ3RydWUnO1xuICBoYW1idXJnZXIuc2V0QXR0cmlidXRlKCdkYXRhLWhhbWJ1cmdlci1vcGVuJywgaXNfb3Blbik7XG5cbiAgLy8g44K544Oe44Ob55So44Oh44OL44Ol44O844Gu44Ko44OV44Kn44Kv44OIXG4gICQoJy5qcy1zcC1tZW51JykuYXR0cignZGF0YS1zcC1tZW51JywgaXNfb3BlbiA9PT0gJ3RydWUnID8gJ29wZW4nIDogJ2Nsb3NlJyk7XG5cbiAgaWYgKGV2LmN1cnJlbnRUYXJnZXQgPT09IGhhbWJ1cmdlcikge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbn1cblxuLyoqXG4gKiDjgrXjg5bjg6Hjg4vjg6Xjg7zjga7plovplolcbiAqIEBwYXJhbSB7RXZlbnR9IGV2IOOCr+ODquODg+OCr+OCpOODmeODs+ODiFxuICovXG5mdW5jdGlvbiB0b2dnbGVfc3VibWVudShldikge1xuICAvLyDjg6Hjg4vjg6Xjg7zjg5zjgr/jg7PjgajjgIHlhYTlvJ/opoHntKDjga7jgrXjg5bjg6Hjg4vjg6Xjg7xcbiAgY29uc3QgJGJ1dHRvbiA9ICQoZXYuY3VycmVudFRhcmdldCk7XG4gIGNvbnN0ICRzdWJtZW51ID0gJGJ1dHRvbi5uZXh0KCk7XG4gIGNvbnN0IGlzX29wZW5lZCA9ICRidXR0b24uYXR0cignZGF0YS1zdWJtZW51LW9wZW5lZCcpID09PSAndHJ1ZSc7XG5cbiAgaWYgKGlzX29wZW5lZCkge1xuICAgICRidXR0b24uYXR0cignZGF0YS1zdWJtZW51LW9wZW5lZCcsICdmYWxzZScpO1xuICAgICRzdWJtZW51LmF0dHIoJ2RhdGEtc3VibWVudS1vcGVuZWQnLCAnZmFsc2UnKTtcbiAgfSBlbHNlIHtcbiAgICAkYnV0dG9uLmF0dHIoJ2RhdGEtc3VibWVudS1vcGVuZWQnLCAndHJ1ZScpO1xuICAgICRzdWJtZW51LmF0dHIoJ2RhdGEtc3VibWVudS1vcGVuZWQnLCAndHJ1ZScpO1xuICB9XG4gIGV2LnByZXZlbnREZWZhdWx0KCk7XG59XG4iLCIvKipcbiAqIOODmuODvOOCuOWGheOCueOCr+ODreODvOODq1xuICogaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc21vb3RoLXNjcm9sbFxuICogPGEgaHJlZj1cIiN0YXJnZXRcIiBjbGFzcz1cImpzLXBhZ2VzY3JvbGxcIj5cbiAqXG4gKiDjgrnjgq/jg63jg7zjg6vjgpLnmbrnlJ/jgZXjgZvjgovjgZPjgajjgoLlj6/og71cbiAqIHNjcm9sbC5hbmltYXRlU2Nyb2xsKFxuICogICB0YXJnZXRfeSxcbiAqICAgJycsXG4gKiAgIHtcbiAqICAgICAgIHNwZWVkOiAxNTAwLFxuICogICAgICAgZWFzaW5nOiAnZWFzZUluT3V0Q3ViaWMnXG4gKiAgIH1cbiAqICk7XG4gKlxuICog44Kt44Oj44Oz44K744Or44KC5Y+v6IO9XG4gKiBzY3JvbGwuY2FuY2VsU2Nyb2xsKCk7XG4gKlxuICovXG5cbi8qIGVzbGludCBuby11bnVzZWQtdmFyczpvZmYgKi9cbi8qIGVzbGludCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnM6b2ZmICovXG5cbmltcG9ydCBTbW9vdGhTY3JvbGwgZnJvbSAnc21vb3RoLXNjcm9sbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgLy8g5rGO55So44K544Kv44Ot44O844OrXG4gIGNvbnN0IGNsaWNrX3Njcm9sbCA9IG5ldyBTbW9vdGhTY3JvbGwoJ2EuanMtcGFnZXNjcm9sbCcsIHtcbiAgICBzcGVlZDogNTAwLFxuICAgIG9mZnNldDogODAsXG4gICAgZWFzaW5nOiAnZWFzZUluT3V0Q3ViaWMnLFxuICB9KTtcblxuICBjb25zdCBzY3JvbGwgPSBuZXcgU21vb3RoU2Nyb2xsKCk7XG5cbiAgLy8g44Oa44O844K444OI44OD44OX44Gr44K544Kv44Ot44O844OrXG4gICQoJy5qcy1yZXR1cm4tdXAnKS5vbignY2xpY2snLCAoZXYpID0+IHtcbiAgICBzY3JvbGwuYW5pbWF0ZVNjcm9sbCgwLCBudWxsLCB7XG4gICAgICBzcGVlZDogNTAwLFxuICAgICAgb2Zmc2V0OiAwLFxuICAgICAgZWFzaW5nOiAnZWFzZUluT3V0Q3ViaWMnLFxuICAgIH0pO1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gIH0pO1xufVxuIiwiLyoqXG4gKiDnlLvpnaLlhoXjga7kvY3nva7jgavlv5zjgZjjgaYgZGF0YS1zY3JvbGwtYW1vdW50IOWxnuaAp+OCkuWkieWMluOBleOBm+OCi1xuICog44CM44Oa44O844K444OI44OD44OX44Gr5oi744KL44Oc44K/44Oz44CN44Gu6KGo56S65YiH44KK5pu/44GI44Gq44GpXG4gKi9cblxuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOm9mZiAqL1xuLyogZXNsaW50IEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyczpvZmYgKi9cblxuaW1wb3J0IFNjcm9sbEFtb3VudCBmcm9tICdAc3lnbmFzL3Njcm9sbC1hbW91bnQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNjcm9sbF9hbW91bnQgPSBuZXcgU2Nyb2xsQW1vdW50KCcuanMtc2Nyb2xsLWFtb3VudCcpO1xufVxuIiwiLyoqXG4gKiDjgrnjgq/jg63jg7zjg6sgaW4gVmlld1xuICog55S76Z2i44Gr5YWl44KL44GoIGRhdGEtaW52aWV3IOWxnuaAp+OBjOOAjHRydWXjgI3jgavjgarjgovjga7jgafjgIFcbiAqIGNzcyDlgbTjgafjgqjjg5Xjgqfjgq/jg4jjgpLliLblvqHjgZnjgotcbiAqL1xuXG5pbXBvcnQgSW5WaWV3IGZyb20gJ0BzeWduYXMvc2Nyb2xsLWludmlldyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgaW52aWV3ID0gbmV3IEluVmlldygnLmpzLWludmlldycsIHsgcm9vdE1hcmdpbjogJzBweCAwcHggLTIwJSAwcHgnIH0pO1xuICBpbnZpZXcuc3RhcnQoKTtcbn1cbiIsIi8qKlxuICog44K944O844K344Oj44Or44K344Kn44Ki44Oc44K/44OzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vc3lnbmFzL3N5Zy1qcC1zb2NpYWwtc2hhcmVcbiAqL1xuXG5pbXBvcnQgc29jaWFsU2hhcmUgZnJvbSAnQHN5Z25hcy9qcC1zb2NpYWwtc2hhcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIHNvY2lhbFNoYXJlLnNldFNoYXJlQnV0dG9uKCcuanMtc2hhcmUtYnV0dG9uJyk7XG59XG4iLCIvKipcbiAqIOaUvumAgeaDheWgseOAgeOCueOCv+ODg+ODleOAgeOCueODmuOCt+ODo+ODq+OBquOBqeOCv+ODluODoeODi+ODpeODvOOCkuS9v+OBhuWFsemAmuOCueOCr+ODquODl+ODiFxuICogaWQ9XCJhcHAtdGFiXCIg5YaF44KS5pON5L2c44CCXG4gKiDku5bjga4gVnVlIOOCpOODs+OCueOCv+ODs+OCueOBqOiiq+OCieOBquOBhOOCiOOBhuOBq+azqOaEj1xuICovXG4vKiBlc2xpbnQgbm8tbmV3Om9mZiAqL1xuLyogLy8gZXNsaW50IGltcG9ydC9uby11bnJlc29sdmVkOm9mZiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVBcHAgfSBmcm9tICd2dWUnO1xuaW1wb3J0IHsgVnVlVGFicywgdXNlVGFiQ29udHJvbCB9IGZyb20gJ0BzeWduYXMvdnVlLXRhYnMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIC8vIOOCueOCv+ODg+ODleODmuODvOOCuOS7peWkluOBr+aKnOOBkeOCi1xuICBjb25zdCB0YXJnZXQgPSAnI2FwcC10YWInO1xuICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHRhYkNvbnRyb2wgPSB1c2VUYWJDb250cm9sKCd0YWJHcm91cCcpO1xuXG4gIGNvbnN0IGFwcCA9IGNyZWF0ZUFwcCh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgVnVlVGFicyxcbiAgICB9LFxuICAgIGNvbXB1dGVkOiB7XG4gICAgICBhY3RpdmVJZCgpIHtcbiAgICAgICAgcmV0dXJuIHRhYkNvbnRyb2wuYWN0aXZlSWQudmFsdWU7XG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBhcHAubW91bnQodGFyZ2V0KTtcbn1cbiIsIk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzWydkZWZhdWx0J10gPSBpc1RvdWNoRGV2aWNlO1xuZnVuY3Rpb24gaXNUb3VjaERldmljZSgpIHtcbiAgcmV0dXJuICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICgnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgd2luZG93LkRvY3VtZW50VG91Y2ggJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudCBpbnN0YW5jZW9mIHdpbmRvdy5Eb2N1bWVudFRvdWNoKSkgfHwgISEodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgKG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyB8fCBuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cykpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLypcblRoaXMgcGx1Z2luIGV4dGVuZHMgbGF6eVNpemVzIHRvIGxhenlMb2FkOlxuYmFja2dyb3VuZCBpbWFnZXMsIHZpZGVvcy9wb3N0ZXJzIGFuZCBzY3JpcHRzXG5cbkJhY2tncm91bmQtSW1hZ2U6XG5Gb3IgYmFja2dyb3VuZCBpbWFnZXMsIHVzZSBkYXRhLWJnIGF0dHJpYnV0ZTpcbjxkaXYgY2xhc3M9XCJsYXp5bG9hZFwiIGRhdGEtYmc9XCJ
2208iZy1pbWcuanBnXCI+PC9kaXY+XG5cbiBWaWRlbzpcbiBGb3IgdmlkZW8vYXVkaW8gdXNlIGRhdGEtcG9zdGVyIGFuZCBwcmVsb2FkPVwibm9uZVwiOlxuIDx2aWRlbyBjbGFzcz1cImxhenlsb2FkXCIgcHJlbG9hZD1cIm5vbmVcIiBkYXRhLXBvc3Rlcj1cInBvc3Rlci5qcGdcIiBzcmM9XCJzcmMubXA0XCI+XG4gPCEtLSBzb3VyY2VzIC0tPlxuIDwvdmlkZW8+XG5cbiBGb3IgdmlkZW8gdGhhdCBwbGF5cyBhdXRvbWF0aWNhbGx5IGlmIGluIHZpZXc6XG4gPHZpZGVvXG5cdGNsYXNzPVwibGF6eWxvYWRcIlxuXHRwcmVsb2FkPVwibm9uZVwiXG5cdG11dGVkPVwiXCJcblx0ZGF0YS1hdXRvcGxheT1cIlwiXG5cdGRhdGEtcG9zdGVyPVwicG9zdGVyLmpwZ1wiXG5cdHNyYz1cInNyYy5tcDRcIj5cbjwvdmlkZW8+XG5cbiBTY3JpcHRzOlxuIEZvciBzY3JpcHRzIHVzZSBkYXRhLXNjcmlwdDpcbiA8ZGl2IGNsYXNzPVwibGF6eWxvYWRcIiBkYXRhLXNjcmlwdD1cIm1vZHVsZS1uYW1lLmpzXCI+PC9kaXY+XG5cblxuIFNjcmlwdCBtb2R1bGVzIHVzaW5nIHJlcXVpcmU6XG4gRm9yIG1vZHVsZXMgdXNpbmcgcmVxdWlyZSB1c2UgZGF0YS1yZXF1aXJlOlxuIDxkaXYgY2xhc3M9XCJsYXp5bG9hZFwiIGRhdGEtcmVxdWlyZT1cIm1vZHVsZS1uYW1lXCI+PC9kaXY+XG4qL1xuXG4oZnVuY3Rpb24od2luZG93LCBmYWN0b3J5KSB7XG5cdHZhciBnbG9iYWxJbnN0YWxsID0gZnVuY3Rpb24oKXtcblx0XHRmYWN0b3J5KHdpbmRvdy5sYXp5U2l6ZXMpO1xuXHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdsYXp5dW52ZWlscmVhZCcsIGdsb2JhbEluc3RhbGwsIHRydWUpO1xuXHR9O1xuXG5cdGZhY3RvcnkgPSBmYWN0b3J5LmJpbmQobnVsbCwgd2luZG93LCB3aW5kb3cuZG9jdW1lbnQpO1xuXG5cdGlmKHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpe1xuXHRcdGZhY3RvcnkocmVxdWlyZSgnbGF6eXNpemVzJykpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0ZGVmaW5lKFsnbGF6eXNpemVzJ10sIGZhY3RvcnkpO1xuXHR9IGVsc2UgaWYod2luZG93LmxhenlTaXplcykge1xuXHRcdGdsb2JhbEluc3RhbGwoKTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbGF6eXVudmVpbHJlYWQnLCBnbG9iYWxJbnN0YWxsLCB0cnVlKTtcblx0fVxufSh3aW5kb3csIGZ1bmN0aW9uKHdpbmRvdywgZG9jdW1lbnQsIGxhenlTaXplcykge1xuXHQvKmpzaGludCBlcW51bGw6dHJ1ZSAqL1xuXHQndXNlIHN0cmljdCc7XG5cdHZhciBiZ0xvYWQsIHJlZ0JnVXJsRXNjYXBlO1xuXHR2YXIgdW5pcXVlVXJscyA9IHt9O1xuXG5cdGlmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpe1xuXHRcdHJlZ0JnVXJsRXNjYXBlID0gL1xcKHxcXCl8XFxzfCcvO1xuXG5cdFx0YmdMb2FkID0gZnVuY3Rpb24gKHVybCwgY2Ipe1xuXHRcdFx0dmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXHRcdFx0aW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCl7XG5cdFx0XHRcdGltZy5vbmxvYWQgPSBudWxsO1xuXHRcdFx0XHRpbWcub25lcnJvciA9IG51bGw7XG5cdFx0XHRcdGltZyA9IG51bGw7XG5cdFx0XHRcdGNiKCk7XG5cdFx0XHR9O1xuXHRcdFx0aW1nLm9uZXJyb3IgPSBpbWcub25sb2FkO1xuXG5cdFx0XHRpbWcuc3JjID0gdXJsO1xuXG5cdFx0XHRpZihpbWcgJiYgaW1nLmNvbXBsZXRlICYmIGltZy5vbmxvYWQpe1xuXHRcdFx0XHRpbWcub25sb2FkKCk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGFkZEV2ZW50TGlzdGVuZXIoJ2xhenliZWZvcmV1bnZlaWwnLCBmdW5jdGlvbihlKXtcblx0XHRcdGlmKGUuZGV0YWlsLmluc3RhbmNlICE9IGxhenlTaXplcyl7cmV0dXJuO31cblxuXHRcdFx0dmFyIHRtcCwgbG9hZCwgYmcsIHBvc3Rlcjtcblx0XHRcdGlmKCFlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcblxuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG5cblx0XHRcdFx0aWYodGFyZ2V0LnByZWxvYWQgPT0gJ25vbmUnKXtcblx0XHRcdFx0XHR0YXJnZXQucHJlbG9hZCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlbG9hZCcpIHx8ICdhdXRvJztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWF1dG9wbGF5JykgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGlmICh0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWV4cGFuZCcpICYmICF0YXJnZXQuYXV0b3BsYXkpIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldC5wbGF5KCk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIChlcikge31cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0LnNldEF0dHJpYnV0ZSgnZGF0YS1leHBhbmQnLCAnLTEwJyk7XG5cdFx0XHRcdFx0XHRcdGxhenlTaXplcy5hQyh0YXJnZXQsIGxhenlTaXplcy5jZmcubGF6eUNsYXNzKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRtcCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGluaycpO1xuXHRcdFx0XHRpZih0bXApe1xuXHRcdFx0XHRcdGFkZFN0eWxlU2NyaXB0KHRtcCwgdHJ1ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBoYW5kbGUgZGF0YS1zY3JpcHRcblx0XHRcdFx0dG1wID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1zY3JpcHQnKTtcblx0XHRcdFx0aWYodG1wKXtcblx0XHRcdFx0XHRlLmRldGFpbC5maXJlc0xvYWQgPSB0cnVlO1xuXHRcdFx0XHRcdGxvYWQgPSBmdW5jdGlvbigpe1xuXHRcdFx0XHRcdFx0ZS5kZXRhaWwuZmlyZXNMb2FkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRsYXp5U2l6ZXMuZmlyZSh0YXJnZXQsICdfbGF6eWxvYWRlZCcsIHt9LCB0cnVlLCB0cnVlKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGFkZFN0eWxlU2NyaXB0KHRtcCwgbnVsbCwgbG9hZCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBoYW5kbGUgZGF0YS1yZXF1aXJlXG5cdFx0XHRcdHRtcCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZScpO1xuXHRcdFx0XHRpZih0bXApe1xuXHRcdFx0XHRcdGlmKGxhenlTaXplcy5jZmcucmVxdWlyZUpzKXtcblx0XHRcdFx0XHRcdGxhenlTaXplcy5jZmcucmVxdWlyZUpzKFt0bXBdKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YWRkU3R5bGVTY3JpcHQodG1wKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBoYW5kbGUgZGF0YS1iZ1xuXHRcdFx0XHRiZyA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYmcnKTtcblx0XHRcdFx0aWYgKGJnKSB7XG5cdFx0XHRcdFx0ZS5kZXRhaWwuZmlyZXNMb2FkID0gdHJ1ZTtcblx0XHRcdFx0XHRsb2FkID0gZnVuY3Rpb24oKXtcblx0XHRcdFx0XHRcdHRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSAndXJsKCcgKyAocmVnQmdVcmxFc2NhcGUudGVzdChiZykgPyBKU09OLnN0cmluZ2lmeShiZykgOiBiZyApICsgJyknO1xuXHRcdFx0XHRcdFx0ZS5kZXRhaWwuZmlyZXNMb2FkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRsYXp5U2l6ZXMuZmlyZSh0YXJnZXQsICdfbGF6eWxvYWRlZCcsIHt9LCB0cnVlLCB0cnVlKTtcblx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0YmdMb2FkKGJnLCBsb2FkKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGhhbmRsZSBkYXRhLXBvc3RlclxuXHRcdFx0XHRwb3N0ZXIgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXBvc3RlcicpO1xuXHRcdFx0XHRpZihwb3N0ZXIpe1xuXHRcdFx0XHRcdGUuZGV0YWlsLmZpcmVzTG9hZCA9IHRydWU7XG5cdFx0XHRcdFx0bG9hZCA9IGZ1bmN0aW9uKCl7XG5cdFx0XHRcdFx0XHR0YXJnZXQucG9zdGVyID0gcG9zdGVyO1xuXHRcdFx0XHRcdFx0ZS5kZXRhaWwuZmlyZXNMb2FkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRsYXp5U2l6ZXMuZmlyZSh0YXJnZXQsICdfbGF6eWxvYWRlZCcsIHt9LCB0cnVlLCB0cnVlKTtcblx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0YmdMb2FkKHBvc3RlciwgbG9hZCk7XG5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sIGZhbHNlKTtcblxuXHR9XG5cblx0ZnVuY3Rpb24gYWRkU3R5bGVTY3JpcHQoc3JjLCBzdHlsZSwgY2Ipe1xuXHRcdGlmKHVuaXF1ZVVybHNbc3JjXSl7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChzdHlsZSA/ICdsaW5rJyA6ICdzY3JpcHQnKTtcblx0XHR2YXIgaW5zZXJ0RWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtcblxuXHRcdGlmKHN0eWxlKXtcblx0XHRcdGVsZW0ucmVsID0gJ3N0eWxlc2hlZXQnO1xuXHRcdFx0ZWxlbS5ocmVmID0gc3JjO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLm9ubG9hZCA9IGZ1bmN0aW9uKCl7XG5cdFx0XHRcdGVsZW0ub25lcnJvciA9IG51bGw7XG5cdFx0XHRcdGVsZW0ub25sb2FkID0gbnVsbDtcblx0XHRcdFx0Y2IoKTtcblx0XHRcdH07XG5cdFx0XHRlbGVtLm9uZXJyb3IgPSBlbGVtLm9ubG9hZDtcblxuXHRcdFx0ZWxlbS5zcmMgPSBzcmM7XG5cdFx0fVxuXHRcdHVuaXF1ZVVybHNbc3JjXSA9IHRydWU7XG5cdFx0dW5pcXVlVXJsc1tlbGVtLnNyYyB8fCBlbGVtLmhyZWZdID0gdHJ1ZTtcblx0XHRpbnNlcnRFbGVtLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW0sIGluc2VydEVsZW0pO1xuXHR9XG59KSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBkbGwtcmVmZXJlbmNlIHZlbmRvcl9saWJyYXJ5ICovIFwiZGxsLXJlZmVyZW5jZSB2ZW5kb3JfbGlicmFyeVwiKSkoMTY2KTsiLCJtb2R1bGUuZXhwb3J0cyA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBkbGwtcmVmZXJlbmNlIHZlbmRvcl9saWJyYXJ5ICovIFwiZGxsLXJlZmVyZW5jZSB2ZW5kb3JfbGlicmFyeVwiKSkoMik7IiwibW9kdWxlLmV4cG9ydHMgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZGxsLXJlZmVyZW5jZSB2ZW5kb3JfbGlicmFyeSAqLyBcImRsbC1yZWZlcmVuY2UgdmVuZG9yX2xpYnJhcnlcIikpKDU4Mik7IiwibW9kdWxlLmV4cG9ydHMgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZGxsLXJlZmVyZW5jZSB2ZW5kb3JfbGlicmFyeSAqLyBcImRsbC1yZWZlcmVuY2UgdmVuZG9yX2xpYnJhcnlcIikpKDgyNCk7IiwibW9kdWxlLmV4cG9ydHMgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZGxsLXJlZmVyZW5jZSB2ZW5kb3JfbGlicmFyeSAqLyBcImRsbC1yZWZlcmVuY2UgdmVuZG9yX2xpYnJhcnlcIikpKDkwKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHZlbmRvcl9saWJyYXJ5OyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6b2ZmICovXG5cbi8vIOWFqOODmuODvOOCuOWFsemAmuWHpueQhlxuaW1wb3J0IGNvbW1vbiBmcm9tICcuL3BhZ2VzL2NvbW1vbi9jb21tb24nO1xuXG5jb21tb24oKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.