@synerty/ng2-balloon-msg-ns
Version:
Show balloon messages to users in Nativescript
138 lines (126 loc) • 29.8 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('/core'), require('@synerty/ng2-balloon-msg'), require('/router'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define('/ng2-balloon-msg-ns', ['exports', '@angular/core', '@synerty/ng2-balloon-msg', '@angular/router', '@angular/common'], factory) :
(factory((global.synerty = global.synerty || {}, global.synerty['ng2-balloon-msg-ns'] = {}),global.ng.core,null,global.ng.router,global.ng.common));
}(this, (function (exports,core,ng2BalloonMsg,router,common) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var Ng2BalloonMsgNsQueueComponent = (function (_super) {
__extends(Ng2BalloonMsgNsQueueComponent, _super);
function Ng2BalloonMsgNsQueueComponent(msgService) {
var _this = _super.call(this, msgService) || this;
_this.fullScreenNeededEvent = new core.EventEmitter();
_this.showModalEvent.subscribe(function (val) { return _this.fullScreenNeededEvent.emit(val); });
return _this;
}
Ng2BalloonMsgNsQueueComponent.decorators = [
{ type: core.Component, args: [{
selector: 'ng2-balloon-msg-ns',
template: "\n<StackLayout>\n <ng2-balloon-msg-item-ns\n *ngFor=\"let msgDetails of getShown()\"\n [msgDetails]=\"msgDetails\">\n\n </ng2-balloon-msg-item-ns>\n</StackLayout>\n"
},] },
];
/** @nocollapse */
Ng2BalloonMsgNsQueueComponent.ctorParameters = function () {
return [
{ type: ng2BalloonMsg.Ng2BalloonMsgService }
];
};
Ng2BalloonMsgNsQueueComponent.propDecorators = {
fullScreenNeededEvent: [{ type: core.Output, args: ["fullScreenNeededEvent",] }]
};
return Ng2BalloonMsgNsQueueComponent;
}(ng2BalloonMsg.Ng2BalloonMsgCommonQueueComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var Ng2BalloonMsgNsItemComponent = (function (_super) {
__extends(Ng2BalloonMsgNsItemComponent, _super);
function Ng2BalloonMsgNsItemComponent(router$$1) {
var _this = _super.call(this, router$$1) || this;
_this.router = router$$1;
return _this;
}
Ng2BalloonMsgNsItemComponent.decorators = [
{ type: core.Component, args: [{
selector: 'ng2-balloon-msg-item-ns',
template: "<StackLayout class=\"p-10\"\n [class.bg-success]=\"msgDetails.isSuccess()\"\n [class.bg-info]=\"msgDetails.isInfo()\"\n [class.bg-warning]=\"msgDetails.isWarning()\"\n [class.bg-danger]=\"msgDetails.isError()\"\n [class.visible]=\"shownStr == 'shown'\"\n [class.hide]=\"shownStr == 'hidden'\"\n ios:isUserInteractionEnabled=\"true\">\n\n <GridLayout *ngIf=\"msgDetails.isFleeting() || msgDetails.isSticky()\"\n width=\"100%\"\n rows=\"auto\" columns=\"*, auto\">\n <Label class=\"\"\n row=\"0\" col=\"0\"\n [text]=\"msgDetails.msg\"\n textWrap=\"true\"\n (tap)=\"msgClicked()\"></Label>\n <Button *ngIf=\"msgDetails.hasRoute()\"\n ios:isUserInteractionEnabled=\"true\"\n class=\"btn\"\n row=\"0\" col=\"1\"\n text=\"Open\"\n (tap)=\"openClicked()\"></Button>\n </GridLayout>\n\n <GridLayout *ngIf=\"msgDetails.isConfirm() || msgDetails.isConfirmCancel()\"\n width=\"100%\" height=\"100%\"\n rows=\"auto, *, auto\" columns=\"*, *\">\n <Label *ngIf=\"msgDetails.dialogTitle != null\"\n class=\"title\"\n row=\"0\" col=\"0\"\n colSpan=\"2\"\n [text]=\"msgDetails.dialogTitle\"\n textWrap=\"true\"></Label>\n\n <Label class=\"h3\"\n row=\"1\" col=\"0\"\n colSpan=\"2\"\n textWrap=\"true\"\n [text]=\"msgDetails.msg\"></Label>\n\n <button *ngIf=\"msgDetails.isConfirmCancel()\"\n ios:isUserInteractionEnabled=\"true\"\n class=\"btn btn-active\"\n row=\"2\" col=\"0\"\n [text]=\"msgDetails.cancelText\"\n (tap)=\"cancelClicked()\">\n </button>\n <button class=\"btn btn-primary btn-active\"\n ios:isUserInteractionEnabled=\"true\"\n row=\"2\" col=\"1\"\n [text]=\"msgDetails.confirmText\"\n (tap)=\"confirmClicked()\">\n </button>\n </GridLayout>\n</StackLayout>\n",
styles: [".btn{color:#fff;cursor:pointer;font-size:14.4;padding:8;border:0;background-color:#999;min-width:40;border-radius:4}btn:hover{background-color:#737373}.bg-info{color:#000;background-color:#d9edf7}.bg-success{color:#000;background-color:#dff0d8}.bg-warning{color:#000;background-color:#fcf8e3}.bg-danger{color:#000;background-color:#f2dede}"]
},] },
];
/** @nocollapse */
Ng2BalloonMsgNsItemComponent.ctorParameters = function () {
return [
{ type: router.Router }
];
};
return Ng2BalloonMsgNsItemComponent;
}(ng2BalloonMsg.Ng2BalloonMsgCommonItemComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var Ng2BalloonMsgNsModule = (function () {
function Ng2BalloonMsgNsModule() {
}
Ng2BalloonMsgNsModule.decorators = [
{ type: core.NgModule, args: [{
imports: [
common.CommonModule,
],
exports: [
Ng2BalloonMsgNsQueueComponent,
Ng2BalloonMsgNsItemComponent
],
declarations: [
Ng2BalloonMsgNsQueueComponent,
Ng2BalloonMsgNsItemComponent
],
providers: [],
schemas: [core.NO_ERRORS_SCHEMA]
},] },
];
return Ng2BalloonMsgNsModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
exports.Ng2BalloonMsgNsModule = Ng2BalloonMsgNsModule;
exports.ɵb = Ng2BalloonMsgNsItemComponent;
exports.ɵa = Ng2BalloonMsgNsQueueComponent;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luZXJ0eS1uZzItYmFsbG9vbi1tc2ctbnMudW1kLmpzLm1hcCIsInNvdXJjZXMiOltudWxsLCJuZzovL0BzeW5lcnR5L25nMi1iYWxsb29uLW1zZy1ucy9uZzItYmFsbG9vbi1tc2ctbnMvcXVldWUvbmcyLWJhbGxvb24tbXNnLW5zLXF1ZXVlLmNvbXBvbmVudC50cyIsIm5nOi8vQHN5bmVydHkvbmcyLWJhbGxvb24tbXNnLW5zL25nMi1iYWxsb29uLW1zZy1ucy9pdGVtL25nMi1iYWxsb29uLW1zZy1ucy1pdGVtLmNvbXBvbmVudC50cyIsIm5nOi8vQHN5bmVydHkvbmcyLWJhbGxvb24tbXNnLW5zL25nMi1iYWxsb29uLW1zZy1ucy9uZzItYmFsbG9vbi1tc2ctbnMubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlXHJcbnRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlXHJcbkxpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcblxyXG5USElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXHJcbktJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRURcclxuV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSxcclxuTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC5cclxuXHJcblNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xyXG5hbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMClcclxuICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZShyZXN1bHQudmFsdWUpOyB9KS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBleHBvcnRzKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmICghZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcclxuICAgIHJlc3VsdC5kZWZhdWx0ID0gbW9kO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuIiwiaW1wb3J0IHtDb21wb25lbnQsIE91dHB1dCwgRXZlbnRFbWl0dGVyfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtOZzJCYWxsb29uTXNnQ29tbW9uUXVldWVDb21wb25lbnR9IGZyb20gXCJAc3luZXJ0eS9uZzItYmFsbG9vbi1tc2dcIjtcbmltcG9ydCB7TmcyQmFsbG9vbk1zZ1NlcnZpY2V9IGZyb20gXCJAc3luZXJ0eS9uZzItYmFsbG9vbi1tc2dcIjtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25nMi1iYWxsb29uLW1zZy1ucycsXG4gICAgdGVtcGxhdGU6IGBcbjxTdGFja0xheW91dD5cbiAgICA8bmcyLWJhbGxvb24tbXNnLWl0ZW0tbnNcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtc2dEZXRhaWxzIG9mIGdldFNob3duKClcIlxuICAgICAgICAgICAgW21zZ0RldGFpbHNdPVwibXNnRGV0YWlsc1wiPlxuXG4gICAgPC9uZzItYmFsbG9vbi1tc2ctaXRlbS1ucz5cbjwvU3RhY2tMYXlvdXQ+XG5gXG59KVxuZXhwb3J0IGNsYXNzIE5nMkJhbGxvb25Nc2dOc1F1ZXVlQ29tcG9uZW50IGV4dGVuZHMgTmcyQmFsbG9vbk1zZ0NvbW1vblF1ZXVlQ29tcG9uZW50IHtcblxuICAgIEBPdXRwdXQoXCJmdWxsU2NyZWVuTmVlZGVkRXZlbnRcIilcbiAgICBmdWxsU2NyZWVuTmVlZGVkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihtc2dTZXJ2aWNlOiBOZzJCYWxsb29uTXNnU2VydmljZSkge1xuICAgICAgICBzdXBlcihtc2dTZXJ2aWNlKTtcblxuICAgICAgICB0aGlzLnNob3dNb2RhbEV2ZW50LnN1YnNjcmliZShcbiAgICAgICAgICAgICh2YWwpID0+IHRoaXMuZnVsbFNjcmVlbk5lZWRlZEV2ZW50LmVtaXQodmFsKVxuICAgICAgICApXG4gICAgfVxuXG5cbn1cbiIsImltcG9ydCB7Q29tcG9uZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7TmcyQmFsbG9vbk1zZ0NvbW1vbkl0ZW1Db21wb25lbnR9IGZyb20gXCJAc3luZXJ0eS9uZzItYmFsbG9vbi1tc2dcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZzItYmFsbG9vbi1tc2ctaXRlbS1ucycsXG4gICAgdGVtcGxhdGU6IGA8U3RhY2tMYXlvdXQgY2xhc3M9XCJwLTEwXCJcbiAgICAgICAgICAgICBbY2xhc3MuYmctc3VjY2Vzc109XCJtc2dEZXRhaWxzLmlzU3VjY2VzcygpXCJcbiAgICAgICAgICAgICBbY2xhc3MuYmctaW5mb109XCJtc2dEZXRhaWxzLmlzSW5mbygpXCJcbiAgICAgICAgICAgICBbY2xhc3MuYmctd2FybmluZ109XCJtc2dEZXRhaWxzLmlzV2FybmluZygpXCJcbiAgICAgICAgICAgICBbY2xhc3MuYmctZGFuZ2VyXT1cIm1zZ0RldGFpbHMuaXNFcnJvcigpXCJcbiAgICAgICAgICAgICBbY2xhc3MudmlzaWJsZV09XCJzaG93blN0ciA9PSAnc2hvd24nXCJcbiAgICAgICAgICAgICBbY2xhc3MuaGlkZV09XCJzaG93blN0ciA9PSAnaGlkZGVuJ1wiXG4gICAgICAgICAgICAgaW9zOmlzVXNlckludGVyYWN0aW9uRW5hYmxlZD1cInRydWVcIj5cblxuICA8R3JpZExheW91dCAqbmdJZj1cIm1zZ0RldGFpbHMuaXNGbGVldGluZygpIHx8IG1zZ0RldGFpbHMuaXNTdGlja3koKVwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgIHJvd3M9XCJhdXRvXCIgY29sdW1ucz1cIiosIGF1dG9cIj5cbiAgICA8TGFiZWwgY2xhc3M9XCJcIlxuICAgICAgICAgICByb3c9XCIwXCIgY29sPVwiMFwiXG4gICAgICAgICAgIFt0ZXh0XT1cIm1zZ0RldGFpbHMubXNnXCJcbiAgICAgICAgICAgdGV4dFdyYXA9XCJ0cnVlXCJcbiAgICAgICAgICAgKHRhcCk9XCJtc2dDbGlja2VkKClcIj48L0xhYmVsPlxuICAgIDxCdXR0b24gKm5nSWY9XCJtc2dEZXRhaWxzLmhhc1JvdXRlKClcIlxuICAgICAgICAgICAgaW9zOmlzVXNlckludGVyYWN0aW9uRW5hYmxlZD1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgcm93PVwiMFwiIGNvbD1cIjFcIlxuICAgICAgICAgICAgdGV4dD1cIk9wZW5cIlxuICAgICAgICAgICAgKHRhcCk9XCJvcGVuQ2xpY2tlZCgpXCI+PC9CdXR0b24+XG4gIDwvR3JpZExheW91dD5cblxuICA8R3JpZExheW91dCAqbmdJZj1cIm1zZ0RldGFpbHMuaXNDb25maXJtKCkgfHwgbXNnRGV0YWlscy5pc0NvbmZpcm1DYW5jZWwoKVwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICAgICAgICByb3dzPVwiYXV0bywgKiwgYXV0b1wiIGNvbHVtbnM9XCIqLCAqXCI+XG4gICAgPExhYmVsICpuZ0lmPVwibXNnRGV0YWlscy5kaWFsb2dUaXRsZSAhPSAgbnVsbFwiXG4gICAgICAgICAgIGNsYXNzPVwidGl0bGVcIlxuICAgICAgICAgICByb3c9XCIwXCIgY29sPVwiMFwiXG4gICAgICAgICAgIGNvbFNwYW49XCIyXCJcbiAgICAgICAgICAgW3RleHRdPVwibXNnRGV0YWlscy5kaWFsb2dUaXRsZVwiXG4gICAgICAgICAgIHRleHRXcmFwPVwidHJ1ZVwiPjwvTGFiZWw+XG5cbiAgICA8TGFiZWwgY2xhc3M9XCJoM1wiXG4gICAgICAgICAgIHJvdz1cIjFcIiBjb2w9XCIwXCJcbiAgICAgICAgICAgY29sU3Bhbj1cIjJcIlxuICAgICAgICAgICB0ZXh0V3JhcD1cInRydWVcIlxuICAgICAgICAgICBbdGV4dF09XCJtc2dEZXRhaWxzLm1zZ1wiPjwvTGFiZWw+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwibXNnRGV0YWlscy5pc0NvbmZpcm1DYW5jZWwoKVwiXG4gICAgICAgICAgICBpb3M6aXNVc2VySW50ZXJhY3Rpb25FbmFibGVkPVwidHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tYWN0aXZlXCJcbiAgICAgICAgICAgIHJvdz1cIjJcIiBjb2w9XCIwXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIm1zZ0RldGFpbHMuY2FuY2VsVGV4dFwiXG4gICAgICAgICAgICAodGFwKT1cImNhbmNlbENsaWNrZWQoKVwiPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWFjdGl2ZVwiXG4gICAgICAgICAgICBpb3M6aXNVc2VySW50ZXJhY3Rpb25FbmFibGVkPVwidHJ1ZVwiXG4gICAgICAgICAgICByb3c9XCIyXCIgY29sPVwiMVwiXG4gICAgICAgICAgICBbdGV4dF09XCJtc2dEZXRhaWxzLmNvbmZpcm1UZXh0XCJcbiAgICAgICAgICAgICh0YXApPVwiY29uZmlybUNsaWNrZWQoKVwiPlxuICAgIDwvYnV0dG9uPlxuICA8L0dyaWRMYXlvdXQ+XG48L1N0YWNrTGF5b3V0PlxuYCxcbiAgICBzdHlsZXM6IFtgLmJ0bntjb2xvcjojZmZmO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxNC40O3BhZGRpbmc6ODtib3JkZXI6MDtiYWNrZ3JvdW5kLWNvbG9yOiM5OTk7bWluLXdpZHRoOjQwO2JvcmRlci1yYWRpdXM6NH1idG46aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNzM3MzczfS5iZy1pbmZve2NvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjojZDllZGY3fS5iZy1zdWNjZXNze2NvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4fS5iZy13YXJuaW5ne2NvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjojZmNmOGUzfS5iZy1kYW5nZXJ7Y29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGV9YF1cbn0pXG5leHBvcnQgY2xhc3MgTmcyQmFsbG9vbk1zZ05zSXRlbUNvbXBvbmVudCBleHRlbmRzIE5nMkJhbGxvb25Nc2dDb21tb25JdGVtQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcikge1xuICAgICAgICBzdXBlcihyb3V0ZXIpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7TmdNb2R1bGUsIE5PX0VSUk9SU19TQ0hFTUF9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nMkJhbGxvb25Nc2dOc1F1ZXVlQ29tcG9uZW50fSBmcm9tICcuL3F1ZXVlL25nMi1iYWxsb29uLW1zZy1ucy1xdWV1ZS5jb21wb25lbnQnO1xuaW1wb3J0IHtOZzJCYWxsb29uTXNnTnNJdGVtQ29tcG9uZW50fSBmcm9tICcuL2l0ZW0vbmcyLWJhbGxvb24tbXNnLW5zLWl0ZW0uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE5nMkJhbGxvb25Nc2dOc1F1ZXVlQ29tcG9uZW50LFxuICAgIE5nMkJhbGxvb25Nc2dOc0l0ZW1Db21wb25lbnRcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTmcyQmFsbG9vbk1zZ05zUXVldWVDb21wb25lbnQsXG4gICAgTmcyQmFsbG9vbk1zZ05zSXRlbUNvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtdLFxuICBzY2hlbWFzOiBbTk9fRVJST1JTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgTmcyQmFsbG9vbk1zZ05zTW9kdWxlIHtcblxufVxuIl0sIm5hbWVzIjpbInRzbGliXzEuX19leHRlbmRzIiwiRXZlbnRFbWl0dGVyIiwiQ29tcG9uZW50IiwiTmcyQmFsbG9vbk1zZ1NlcnZpY2UiLCJPdXRwdXQiLCJOZzJCYWxsb29uTXNnQ29tbW9uUXVldWVDb21wb25lbnQiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJOZzJCYWxsb29uTXNnQ29tbW9uSXRlbUNvbXBvbmVudCIsIk5nTW9kdWxlIiwiQ29tbW9uTW9kdWxlIiwiTk9fRVJST1JTX1NDSEVNQSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7O0lBY0E7SUFFQSxJQUFJLGFBQWEsR0FBRyxVQUFTLENBQUMsRUFBRSxDQUFDO1FBQzdCLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYzthQUNoQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RSxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUFFLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7b0JBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0UsT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQztBQUVGLHVCQUEwQixDQUFDLEVBQUUsQ0FBQztRQUMxQixhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLGdCQUFnQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQ3ZDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQzs7Ozs7OztRQ1ZrREEsaURBQWlDO1FBS2hGLHVDQUFZLFVBQWdDO1lBQTVDLFlBQ0ksa0JBQU0sVUFBVSxDQUFDLFNBS3BCOzBDQVJ1QixJQUFJQyxpQkFBWSxFQUFXO1lBSy9DLEtBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUN6QixVQUFDLEdBQUcsSUFBSyxPQUFBLEtBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUEsQ0FDaEQsQ0FBQTs7U0FDSjs7b0JBdkJKQyxjQUFTLFNBQUM7d0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjt3QkFDOUIsUUFBUSxFQUFFLGtNQVFiO3FCQUNBOzs7Ozt3QkFkT0Msa0NBQW9COzs7OzRDQWlCdkJDLFdBQU0sU0FBQyx1QkFBdUI7OzRDQW5CbkM7TUFpQm1EQywrQ0FBaUM7Ozs7Ozs7UUNnRGxDTCxnREFBZ0M7UUFFOUUsc0NBQXNCTSxTQUFjO1lBQXBDLFlBQ0ksa0JBQU1BLFNBQU0sQ0FBQyxTQUNoQjtZQUZxQixZQUFNLEdBQU5BLFNBQU0sQ0FBUTs7U0FFbkM7O29CQWpFSkosY0FBUyxTQUFDO3dCQUNQLFFBQVEsRUFBRSx5QkFBeUI7d0JBQ25DLFFBQVEsRUFBRSw2akVBd0RiO3dCQUNHLE1BQU0sRUFBRSxDQUFDLHFWQUFxVixDQUFDO3FCQUNsVzs7Ozs7d0JBL0RPSyxhQUFNOzs7MkNBRGQ7TUFpRWtEQyw4Q0FBZ0M7Ozs7OztBQ2pFbEY7Ozs7b0JBS0NDLGFBQVEsU0FBQzt3QkFDUixPQUFPLEVBQUU7NEJBQ1BDLG1CQUFZO3lCQUNiO3dCQUNELE9BQU8sRUFBRTs0QkFDUCw2QkFBNkI7NEJBQzdCLDRCQUE0Qjt5QkFDN0I7d0JBQ0QsWUFBWSxFQUFFOzRCQUNaLDZCQUE2Qjs0QkFDN0IsNEJBQTRCO3lCQUM3Qjt3QkFDRCxTQUFTLEVBQUUsRUFBRTt3QkFDYixPQUFPLEVBQUUsQ0FBQ0MscUJBQWdCLENBQUM7cUJBQzVCOztvQ0FuQkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=