tango-app-ui-manage-stores 3.0.38-dev → 3.0.40-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -82,7 +82,7 @@ export class TangoManageGroupsComponent {
82
82
  next: (data) => {
83
83
  if (data) {
84
84
  this.$headerFilters = data;
85
- this.group_req = { clientId: this.$headerFilters.client };
85
+ this.group_req = { clientId: this.$headerFilters.client, offset: 1, limit: 10 };
86
86
  this.getGroups();
87
87
  }
88
88
  }
@@ -263,12 +263,12 @@ export class TangoManageGroupsComponent {
263
263
  });
264
264
  }
265
265
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TangoManageGroupsComponent, deps: [{ token: i1.NgbModal }, { token: i2.GroupService }, { token: i0.ChangeDetectorRef }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
266
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: TangoManageGroupsComponent, selector: "lib-tango-manage-groups", outputs: { dataEvent: "dataEvent" }, ngImport: i0, template: "<div class=\"card mb-10\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Groups</span>\r\n <span class=\"text-sub mb-2\">{{groupData?.count || 0}} total groups</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n @if (groups.length) {\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n }\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" type=\"button\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create Group</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && groups.length\" class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\" *ngFor=\"let obj of groups\">\r\n <div class=\"border-val mb-7 py-7\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span><a class=\"role-title my-2 cursor-pointer\" (click)=\"groupsDetials(obj)\">{{obj.groupName ||\r\n 'NA'}}</a></span>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"px-5 cursor-pointer\" (click)=\"createGroup('view',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M0.833496 9.99999C0.833496 9.99999 4.16683 3.33333 10.0002 3.33333C15.8335 3.33333 19.1668 9.99999 19.1668 9.99999C19.1668 9.99999 15.8335 16.6667 10.0002 16.6667C4.16683 16.6667 0.833496 9.99999 0.833496 9.99999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 12.5C11.3809 12.5 12.5002 11.3807 12.5002 9.99999C12.5002 8.61928 11.3809 7.49999 10.0002 7.49999C8.61945 7.49999 7.50016 8.61928 7.50016 9.99999C7.50016 11.3807 8.61945 12.5 10.0002 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n @if ((gs.userAccess | async)?.manage_stores_isDelete) {\r\n <span class=\"cursor-pointer\" (click)=\"deleteGroups('delete',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M2.5 5.00001H4.16667M4.16667 5.00001H17.5M4.16667 5.00001V16.6667C4.16667 17.1087 4.34226 17.5326 4.65482 17.8452C4.96738 18.1577 5.39131 18.3333 5.83333 18.3333H14.1667C14.6087 18.3333 15.0326 18.1577 15.3452 17.8452C15.6577 17.5326 15.8333 17.1087 15.8333 16.6667V5.00001H4.16667ZM6.66667 5.00001V3.33334C6.66667 2.89131 6.84226 2.46739 7.15482 2.15483C7.46738 1.84227 7.89131 1.66667 8.33333 1.66667H11.6667C12.1087 1.66667 12.5326 1.84227 12.8452 2.15483C13.1577 2.46739 13.3333 2.89131 13.3333 3.33334V5.00001M8.33333 9.16667V14.1667M11.6667 9.16667V14.1667\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"sub-title fw-semibold my-5\">{{obj.description || 'NA'}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" />\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.storeCount || '--'}} Stores</span>\r\n </div>\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.userCount || '--'}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <ng-container *ngIf=\"loading && !groups.length\" >\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <!-- No group Illustration -->\r\n <div *ngIf=\"!loading && !groups?.length\" class=\"d-flex justify-content-center my-20 w-100\">\r\n <div class=\"w-350px d-grid align-items-center text-center\">\r\n <img class=\"mx-auto\" src=\"./assets/tango/Images/storesIllustration.png\" alt=\"\">\r\n\r\n <span class=\"illustcontent\"> Start by creating a group</span>\r\n <span class=\"text-sub\">You can view all your groups here</span>\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" class=\"btn btn-primary w-100 mt-10\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99984 4.16675V15.8334M4.1665 10.0001H15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n Create Group\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <lib-group-details></lib-group-details> -->", styles: [".title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px!important}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title,.role-title:hover{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline!important}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.dropdown1{position:absolute;top:70px;right:14.5%;min-width:270px!important}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.dropdown{position:relative;display:inline-block}.dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.dropdown-content{width:90%!important;z-index:1;padding:10px;background-color:#fff;border-radius:8px;box-shadow:0 8px 16px #0003}.dropdown-content label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown button{padding:10px;font-size:16px;cursor:pointer}input[type=checkbox]{width:16px!important;height:16px!important;margin:-3px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
266
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: TangoManageGroupsComponent, selector: "lib-tango-manage-groups", outputs: { dataEvent: "dataEvent" }, ngImport: i0, template: "<div class=\"card mb-10\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Groups</span>\r\n <span class=\"text-sub mb-2\">{{groupData?.count || 0}} total groups</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n @if (groups.length) {\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n }\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" type=\"button\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create Group</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && groups.length\" class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\" *ngFor=\"let obj of groups\">\r\n <div class=\"border-val mb-7 py-7\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span><a class=\"role-title my-2 cursor-pointer\" (click)=\"groupsDetials(obj)\">{{obj.groupName ||\r\n 'NA'}}</a></span>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"px-5 cursor-pointer\" (click)=\"createGroup('view',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M0.833496 9.99999C0.833496 9.99999 4.16683 3.33333 10.0002 3.33333C15.8335 3.33333 19.1668 9.99999 19.1668 9.99999C19.1668 9.99999 15.8335 16.6667 10.0002 16.6667C4.16683 16.6667 0.833496 9.99999 0.833496 9.99999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 12.5C11.3809 12.5 12.5002 11.3807 12.5002 9.99999C12.5002 8.61928 11.3809 7.49999 10.0002 7.49999C8.61945 7.49999 7.50016 8.61928 7.50016 9.99999C7.50016 11.3807 8.61945 12.5 10.0002 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n @if ((gs.userAccess | async)?.manage_stores_isDelete) {\r\n <span class=\"cursor-pointer\" (click)=\"deleteGroups('delete',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M2.5 5.00001H4.16667M4.16667 5.00001H17.5M4.16667 5.00001V16.6667C4.16667 17.1087 4.34226 17.5326 4.65482 17.8452C4.96738 18.1577 5.39131 18.3333 5.83333 18.3333H14.1667C14.6087 18.3333 15.0326 18.1577 15.3452 17.8452C15.6577 17.5326 15.8333 17.1087 15.8333 16.6667V5.00001H4.16667ZM6.66667 5.00001V3.33334C6.66667 2.89131 6.84226 2.46739 7.15482 2.15483C7.46738 1.84227 7.89131 1.66667 8.33333 1.66667H11.6667C12.1087 1.66667 12.5326 1.84227 12.8452 2.15483C13.1577 2.46739 13.3333 2.89131 13.3333 3.33334V5.00001M8.33333 9.16667V14.1667M11.6667 9.16667V14.1667\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"sub-title fw-semibold my-5\">{{obj.description || 'NA'}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" />\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.storeCount || '--'}} Stores</span>\r\n </div>\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.userCount}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <ng-container *ngIf=\"loading && !groups.length\" >\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <!-- No group Illustration -->\r\n <div *ngIf=\"!loading && !groups?.length\" class=\"d-flex justify-content-center my-20 w-100\">\r\n <div class=\"w-350px d-grid align-items-center text-center\">\r\n <img class=\"mx-auto\" src=\"./assets/tango/Images/storesIllustration.png\" alt=\"\">\r\n\r\n <span class=\"illustcontent\"> Start by creating a group</span>\r\n <span class=\"text-sub\">You can view all your groups here</span>\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" class=\"btn btn-primary w-100 mt-10\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99984 4.16675V15.8334M4.1665 10.0001H15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n Create Group\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <lib-group-details></lib-group-details> -->", styles: [".title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px!important}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title,.role-title:hover{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline!important}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.dropdown1{position:absolute;top:70px;right:14.5%;min-width:270px!important}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.dropdown{position:relative;display:inline-block}.dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.dropdown-content{width:90%!important;z-index:1;padding:10px;background-color:#fff;border-radius:8px;box-shadow:0 8px 16px #0003}.dropdown-content label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown button{padding:10px;font-size:16px;cursor:pointer}input[type=checkbox]{width:16px!important;height:16px!important;margin:-3px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
267
267
  }
268
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TangoManageGroupsComponent, decorators: [{
269
269
  type: Component,
270
- args: [{ selector: "lib-tango-manage-groups", template: "<div class=\"card mb-10\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Groups</span>\r\n <span class=\"text-sub mb-2\">{{groupData?.count || 0}} total groups</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n @if (groups.length) {\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n }\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" type=\"button\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create Group</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && groups.length\" class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\" *ngFor=\"let obj of groups\">\r\n <div class=\"border-val mb-7 py-7\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span><a class=\"role-title my-2 cursor-pointer\" (click)=\"groupsDetials(obj)\">{{obj.groupName ||\r\n 'NA'}}</a></span>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"px-5 cursor-pointer\" (click)=\"createGroup('view',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M0.833496 9.99999C0.833496 9.99999 4.16683 3.33333 10.0002 3.33333C15.8335 3.33333 19.1668 9.99999 19.1668 9.99999C19.1668 9.99999 15.8335 16.6667 10.0002 16.6667C4.16683 16.6667 0.833496 9.99999 0.833496 9.99999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 12.5C11.3809 12.5 12.5002 11.3807 12.5002 9.99999C12.5002 8.61928 11.3809 7.49999 10.0002 7.49999C8.61945 7.49999 7.50016 8.61928 7.50016 9.99999C7.50016 11.3807 8.61945 12.5 10.0002 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n @if ((gs.userAccess | async)?.manage_stores_isDelete) {\r\n <span class=\"cursor-pointer\" (click)=\"deleteGroups('delete',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M2.5 5.00001H4.16667M4.16667 5.00001H17.5M4.16667 5.00001V16.6667C4.16667 17.1087 4.34226 17.5326 4.65482 17.8452C4.96738 18.1577 5.39131 18.3333 5.83333 18.3333H14.1667C14.6087 18.3333 15.0326 18.1577 15.3452 17.8452C15.6577 17.5326 15.8333 17.1087 15.8333 16.6667V5.00001H4.16667ZM6.66667 5.00001V3.33334C6.66667 2.89131 6.84226 2.46739 7.15482 2.15483C7.46738 1.84227 7.89131 1.66667 8.33333 1.66667H11.6667C12.1087 1.66667 12.5326 1.84227 12.8452 2.15483C13.1577 2.46739 13.3333 2.89131 13.3333 3.33334V5.00001M8.33333 9.16667V14.1667M11.6667 9.16667V14.1667\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"sub-title fw-semibold my-5\">{{obj.description || 'NA'}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" />\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.storeCount || '--'}} Stores</span>\r\n </div>\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.userCount || '--'}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <ng-container *ngIf=\"loading && !groups.length\" >\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <!-- No group Illustration -->\r\n <div *ngIf=\"!loading && !groups?.length\" class=\"d-flex justify-content-center my-20 w-100\">\r\n <div class=\"w-350px d-grid align-items-center text-center\">\r\n <img class=\"mx-auto\" src=\"./assets/tango/Images/storesIllustration.png\" alt=\"\">\r\n\r\n <span class=\"illustcontent\"> Start by creating a group</span>\r\n <span class=\"text-sub\">You can view all your groups here</span>\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" class=\"btn btn-primary w-100 mt-10\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99984 4.16675V15.8334M4.1665 10.0001H15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n Create Group\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <lib-group-details></lib-group-details> -->", styles: [".title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px!important}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title,.role-title:hover{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline!important}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.dropdown1{position:absolute;top:70px;right:14.5%;min-width:270px!important}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.dropdown{position:relative;display:inline-block}.dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.dropdown-content{width:90%!important;z-index:1;padding:10px;background-color:#fff;border-radius:8px;box-shadow:0 8px 16px #0003}.dropdown-content label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown button{padding:10px;font-size:16px;cursor:pointer}input[type=checkbox]{width:16px!important;height:16px!important;margin:-3px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}\n"] }]
270
+ args: [{ selector: "lib-tango-manage-groups", template: "<div class=\"card mb-10\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Groups</span>\r\n <span class=\"text-sub mb-2\">{{groupData?.count || 0}} total groups</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n @if (groups.length) {\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n }\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" type=\"button\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2 text-white\">Create Group</span>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && groups.length\" class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\" *ngFor=\"let obj of groups\">\r\n <div class=\"border-val mb-7 py-7\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span><a class=\"role-title my-2 cursor-pointer\" (click)=\"groupsDetials(obj)\">{{obj.groupName ||\r\n 'NA'}}</a></span>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"px-5 cursor-pointer\" (click)=\"createGroup('view',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M0.833496 9.99999C0.833496 9.99999 4.16683 3.33333 10.0002 3.33333C15.8335 3.33333 19.1668 9.99999 19.1668 9.99999C19.1668 9.99999 15.8335 16.6667 10.0002 16.6667C4.16683 16.6667 0.833496 9.99999 0.833496 9.99999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 12.5C11.3809 12.5 12.5002 11.3807 12.5002 9.99999C12.5002 8.61928 11.3809 7.49999 10.0002 7.49999C8.61945 7.49999 7.50016 8.61928 7.50016 9.99999C7.50016 11.3807 8.61945 12.5 10.0002 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n @if ((gs.userAccess | async)?.manage_stores_isDelete) {\r\n <span class=\"cursor-pointer\" (click)=\"deleteGroups('delete',obj)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M2.5 5.00001H4.16667M4.16667 5.00001H17.5M4.16667 5.00001V16.6667C4.16667 17.1087 4.34226 17.5326 4.65482 17.8452C4.96738 18.1577 5.39131 18.3333 5.83333 18.3333H14.1667C14.6087 18.3333 15.0326 18.1577 15.3452 17.8452C15.6577 17.5326 15.8333 17.1087 15.8333 16.6667V5.00001H4.16667ZM6.66667 5.00001V3.33334C6.66667 2.89131 6.84226 2.46739 7.15482 2.15483C7.46738 1.84227 7.89131 1.66667 8.33333 1.66667H11.6667C12.1087 1.66667 12.5326 1.84227 12.8452 2.15483C13.1577 2.46739 13.3333 2.89131 13.3333 3.33334V5.00001M8.33333 9.16667V14.1667M11.6667 9.16667V14.1667\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"sub-title fw-semibold my-5\">{{obj.description || 'NA'}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" />\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.storeCount || '--'}} Stores</span>\r\n </div>\r\n <div><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.userCount}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-pagination [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <ng-container *ngIf=\"loading && !groups.length\" >\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <!-- No group Illustration -->\r\n <div *ngIf=\"!loading && !groups?.length\" class=\"d-flex justify-content-center my-20 w-100\">\r\n <div class=\"w-350px d-grid align-items-center text-center\">\r\n <img class=\"mx-auto\" src=\"./assets/tango/Images/storesIllustration.png\" alt=\"\">\r\n\r\n <span class=\"illustcontent\"> Start by creating a group</span>\r\n <span class=\"text-sub\">You can view all your groups here</span>\r\n @if ((gs.userAccess | async)?.manage_stores_isEdit) {\r\n <button (click)=\"createGroup('add')\" class=\"btn btn-primary w-100 mt-10\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99984 4.16675V15.8334M4.1665 10.0001H15.8332\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n Create Group\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- <lib-group-details></lib-group-details> -->", styles: [".title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px!important}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title,.role-title:hover{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline!important}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.dropdown1{position:absolute;top:70px;right:14.5%;min-width:270px!important}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.dropdown{position:relative;display:inline-block}.dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.dropdown-content{width:90%!important;z-index:1;padding:10px;background-color:#fff;border-radius:8px;box-shadow:0 8px 16px #0003}.dropdown-content label{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown button{padding:10px;font-size:16px;cursor:pointer}input[type=checkbox]{width:16px!important;height:16px!important;margin:-3px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.illustcontent{color:var(--Gray-900, #101828);font-size:16px;font-weight:600}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}\n"] }]
271
271
  }], ctorParameters: () => [{ type: i1.NgbModal }, { type: i2.GroupService }, { type: i0.ChangeDetectorRef }, { type: i3.GlobalStateService }], propDecorators: { dataEvent: [{
272
272
  type: Output
273
273
  }] } });
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tbWFuYWdlLWdyb3Vwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc3RvcmVzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtZ3JvdXBzL3RhbmdvLW1hbmFnZS1ncm91cHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXN0b3Jlcy9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tbWFuYWdlLWdyb3Vwcy90YW5nby1tYW5hZ2UtZ3JvdXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQztBQUN2QiwySEFBMkg7QUFDM0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHL0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTywwQkFBMEI7SUF1RDNCO0lBQ0E7SUFDQTtJQUNEO0lBekRDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBRWpELFlBQVksR0FBWSxLQUFLLENBQUM7SUFDOUIsTUFBTSxHQUFVLEVBQUUsQ0FBQztJQUNuQixTQUFTLENBQU07SUFDZixTQUFTLENBQU07SUFDZixVQUFVLEdBQVE7UUFDaEI7WUFDRSxXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLE1BQU0sRUFBRTtnQkFDTixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtnQkFDNUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUU7Z0JB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QUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUMvQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUVkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0E1UVUsMEJBQTBCOzJGQUExQiwwQkFBMEIsb0dDckJ2Qyx1clhBMklvRDs7MkZEdEh2QywwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCO3lLQUt6QixTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkluaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgT25EZXN0cm95LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbi8vIGltcG9ydCB7IENvbnZlcnNpb25TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWF1dGgvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9zZXJ2aWNlcy9jb252ZXJzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcmVhdGVHcm91cENvbXBvbmVudCB9IGZyb20gXCIuLi9jcmVhdGUtZ3JvdXAvY3JlYXRlLWdyb3VwLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBHcm91cERlbGV0ZVBvcHVwQ29tcG9uZW50IH0gZnJvbSBcIi4uL2dyb3VwLWRlbGV0ZS1wb3B1cC9ncm91cC1kZWxldGUtcG9wdXAuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEdyb3VwU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9ncm91cC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdGFuZ28tbWFuYWdlLWdyb3Vwc1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFuZ28tbWFuYWdlLWdyb3Vwcy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vdGFuZ28tbWFuYWdlLWdyb3Vwcy5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFuZ29NYW5hZ2VHcm91cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgpIGRhdGFFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBPcGVuZHJvcGRvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBncm91cHM6IGFueVtdID0gW107XHJcbiAgZ3JvdXBEYXRhOiBhbnk7XHJcbiAgZ3JvdXBfcmVxOiBhbnk7XHJcbiAgZGF0YU9iamVjdDogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBEZXNjcmlwdGlvbjogXCJBY2NvdW50IFN0YXR1c1wiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwiaXNzdWUgMVwiLCBpZDogXCIxXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiaXNzdWUgMlwiLCBpZDogXCIyXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiaXNzdWUgM1wiLCBpZDogXCIzXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIERlc2NyaXB0aW9uOiBcIlN1YnNjcmlwdGlvbiBQbGFuXCIsXHJcbiAgICAgIElzc3VlczogW1xyXG4gICAgICAgIHsgdGV4dDogXCJvYmplY3QgMVwiLCBpZDogXCIxXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwib2JqZWN0IDJcIiwgaWQ6IFwiMlwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIm9iamVjdCAzXCIsIGlkOiBcIjNcIiB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgRGVzY3JpcHRpb246IFwiUHJvY2Vzc2luZyBUeXBlXCIsXHJcbiAgICAgIElzc3VlczogW1xyXG4gICAgICAgIHsgdGV4dDogXCJzZWxlY3QgMVwiLCBpZDogXCIxXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwic2VsZWN0IDJcIiwgaWQ6IFwiMlwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcInNlbGVjdCAzXCIsIGlkOiBcIjNcIiB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgRGVzY3JpcHRpb246IFwiRGF0YSBUeXBlXCIsXHJcbiAgICAgIElzc3VlczogW1xyXG4gICAgICAgIHsgdGV4dDogXCJzZWxlY3QgMVwiLCBpZDogXCIxXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwic2VsZWN0IDJcIiwgaWQ6IFwiMlwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcInNlbGVjdCAzXCIsIGlkOiBcIjNcIiB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIHNob3dkcm9wZG93bjogYW55O1xyXG4gIHNlbGVjdGVkVmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHNlbGVjdGVkVmFsdWVzQXJyYXk6IGFueVtdID0gW107XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBzZWFyY2hWYWx1ZTogc3RyaW5nID0gXCJcIjtcclxuICAkaGVhZGVyRmlsdGVyczogYW55O1xyXG4gIHByaXZhdGUgZGV0YWNoID0gbmV3IFN1YmplY3QoKTtcclxuICBwYWdpbmF0aW9uID0ge1xyXG4gICAgb2Zmc2V0OiAxLFxyXG4gICAgbGltaXQ6IDEwLFxyXG4gICAgdG90YWxDb3VudDogMCxcclxuICB9O1xyXG4gIHBhZ2luYXRpb25TaXplczogbnVtYmVyW10gPSBbMTAsIDIwLCAzMF07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIGdyb3VwU2VydmljZTogR3JvdXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7ICAgIFxyXG4gICAgdGhpcy5kZXRhY2gubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGV0YWNoLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihkYXRhOmFueSk9PntcclxuICAgICAgICBpZihkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBfcmVxID0geyBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQgfTtcclxuICAgICAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXBzKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmKHRoaXMuZ3JvdXBfcmVxLnNlYXJjaFZhbHVlPT1cIlwiICYmIHRoaXMuZ3JvdXBfcmVxLnNlYXJjaFZhbHVlIT11bmRlZmluZWQpIHtcclxuICAgICAgZGVsZXRlIHRoaXMuZ3JvdXBfcmVxWydzZWFyY2hWYWx1ZSddO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncm91cFNlcnZpY2UuZ2V0R3JvdXBzKHRoaXMuZ3JvdXBfcmVxKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5ncm91cERhdGEgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgICAgICBvZmZzZXQ6IHJlcy5kYXRhPy5vZmZzZXRcclxuICAgICAgICAgICAgICA/IHJlcz8uZGF0YS5vZmZzZXRcclxuICAgICAgICAgICAgICA6IHRoaXMucGFnaW5hdGlvbi5vZmZzZXQsXHJcbiAgICAgICAgICAgIGxpbWl0OiByZXMuZGF0YT8ubGltaXQgPyByZXM/LmRhdGEubGltaXQgOiB0aGlzLnBhZ2luYXRpb24ubGltaXQsXHJcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IHJlcy5kYXRhLmNvdW50LFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGlmIChyZXMuZGF0YS5jb3VudCA8IDEwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3Jlcy5kYXRhLmNvdW50XTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nPWZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzID0gW107XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICAgICAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ncm91cHMgPSBbXTtcclxuICAgICAgICB0aGlzLmxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICAgICAgdG90YWxDb3VudDogMCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hEYXRhKCkge1xyXG4gICAgdGhpcy5ncm91cF9yZXEgPSB7XHJcbiAgICAgIC4uLnRoaXMuZ3JvdXBfcmVxLFxyXG4gICAgICAuLi57IHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBudW1iZXIpIHtcclxuICAgIHRoaXMuZ3JvdXBfcmVxLm9mZnNldCA9IE51bWJlcihwYWdlT2Zmc2V0KTtcclxuICAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSBOdW1iZXIocGFnZU9mZnNldCk7XHJcbiAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmdyb3VwX3JlcS5saW1pdCA9IE51bWJlcihwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLnBhZ2luYXRpb24ubGltaXQgPSBOdW1iZXIocGFnZVNpemUpO1xyXG4gICAgdGhpcy5ncm91cF9yZXEub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICB9XHJcbiAgLy8gaXNMaW5rQWN0aXZlKGxpbms6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKGxpbmssIHRydWUpO1xyXG4gIC8vIH1cclxuICBwYWdpbmF0aW9uU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMucGFnaW5hdGlvbj8udG90YWxDb3VudCA8IDEwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb24udG90YWxDb3VudDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb24ubGltaXQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdyb3Vwc0RldGlhbHModmFsOiBhbnkpIHtcclxuICAgIGNvbnN0IGRhdGFUb0dyb3VwID0gXCJHcm91cCBEZXRhaWxzIFZhbHVlXCI7XHJcbiAgICB0aGlzLmRhdGFFdmVudC5lbWl0KGRhdGFUb0dyb3VwKTtcclxuICAgIHRoaXMuZ3JvdXBTZXJ2aWNlLmdyb3VwQ29tbXMubmV4dCh2YWwpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2hlY2tib3goaXNzdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgY3VycmVudElzc3VlcyA9IHRoaXMuZGF0YU9iamVjdFtpbmRleF0uSXNzdWVzO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0gfHwgW107XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF07IC8vIFJldHJpZXZlIHNlbGVjdGVkIHZhbHVlcyBhcnJheSBmb3IgdGhlIGN1cnJlbnQgZHJvcGRvd24gaW5kZXhcclxuXHJcbiAgICBpZiAoaXNzdWUgPT09IFwiU2VsZWN0IEFsbFwiKSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRJc3N1ZXMgPSB0aGlzLmRhdGFPYmplY3RbaW5kZXhdLklzc3Vlcy5tYXAoXHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50ZXh0XHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IGN1cnJlbnRJc3N1ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gSWYgYWxsIGl0ZW1zIGFyZSBhbHJlYWR5IHNlbGVjdGVkLCBkZXNlbGVjdCBhbGxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaW5kZXhdID0gW107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBzZWxlY3QgYWxsIGl0ZW1zXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSA9IFsuLi5jdXJyZW50SXNzdWVzXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGlzc3VlKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0gPSBzZWxlY3RlZFZhbHVlcy5maWx0ZXIoXHJcbiAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtICE9PSBpc3N1ZVxyXG4gICAgICAgICk7IC8vIERlc2VsZWN0IHRoZSBpbmRpdmlkdWFsIGl0ZW0gaWYgYWxyZWFkeSBzZWxlY3RlZFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0ucHVzaChpc3N1ZSk7IC8vIFNlbGVjdCB0aGUgaW5kaXZpZHVhbCBpdGVtIGlmIG5vdCBhbHJlYWR5IHNlbGVjdGVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBVcGRhdGUgXCJTZWxlY3QgQWxsXCIgY2hlY2tib3ggc3RhdHVzIGJhc2VkIG9uIHNlbGVjdGVkIHZhbHVlc1xyXG4gICAgY29uc3Qgc2VsZWN0QWxsSWQgPSBgc2VsZWN0YWxsJHtpbmRleH1gO1xyXG4gICAgY29uc3Qgc2VsZWN0QWxsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICBzZWxlY3RBbGxJZFxyXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKHNlbGVjdEFsbEVsZW1lbnQpIHtcclxuICAgICAgc2VsZWN0QWxsRWxlbWVudC5jaGVja2VkID0gc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSBjdXJyZW50SXNzdWVzLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBVcGRhdGUgY2hlY2tib3hlcyBiYXNlZCBvbiBzZWxlY3RlZCB2YWx1ZXNcclxuICAgIGN1cnJlbnRJc3N1ZXMuZm9yRWFjaCgoaXRlbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0uaW5jbHVkZXMoaXRlbSk7XHJcbiAgICAgIGNvbnN0IGNoZWNrYm94SWQgPSBgb3B0aW9uJHtpdGVtfWA7XHJcbiAgICAgIGNvbnN0IGNoZWNrYm94RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAgIGNoZWNrYm94SWRcclxuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICBpZiAoY2hlY2tib3hFbGVtZW50KSB7XHJcbiAgICAgICAgY2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSBpc0NoZWNrZWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgUmVzZXQoKSB7XHJcbiAgICAvLyB0aGlzLmRhdGFPYmplY3QgPSBbXTtcclxuICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBBcHBseSgpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2ldO1xyXG4gICAgICBjb25zdCBpc3N1ZXMgPSB0aGlzLmRhdGFPYmplY3RbaV0uSXNzdWVzO1xyXG5cclxuICAgICAgaWYgKHNlbGVjdGVkVmFsdWVzKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2ldID0gc2VsZWN0ZWRWYWx1ZXMubWFwKChzZWxlY3RlZElkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlzc3VlID0gaXNzdWVzLmZpbmQoXHJcbiAgICAgICAgICAgIChpc3N1ZUl0ZW06IGFueSkgPT4gaXNzdWVJdGVtLnRleHQgPT09IHNlbGVjdGVkSWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gaXNzdWUgPyBpc3N1ZSA6IFwiXCI7IC8vIEdldCB0aGUgdGV4dCBjb3JyZXNwb25kaW5nIHRvIHRoZSBpZFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlR3JvdXAodHlwZTogYW55LCBncm91cD86IGFueSkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENyZWF0ZUdyb3VwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnR5cGUgPSB0eXBlO1xyXG4gICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmVkaXRHcm91cCA9IGdyb3VwO1xyXG4gICAgfVxyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgfSwgKHJlYXNvbikgPT4ge1xyXG4gICAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVHcm91cHMoZGF0YTogYW55LCBncm91cDogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oR3JvdXBEZWxldGVQb3B1cENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gZGF0YTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRlbGV0ZUdyb3VwID0gZ3JvdXA7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICB9LCAocmVhc29uKSA9PiB7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIG1iLTEwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5Hcm91cHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPnt7Z3JvdXBEYXRhPy5jb3VudCB8fCAwfX0gdG90YWwgZ3JvdXBzPC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChncm91cHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2hhbmdlKT1cInNlYXJjaERhdGEoKVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWFyY2hcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/Lm1hbmFnZV9zdG9yZXNfaXNFZGl0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY3JlYXRlR3JvdXAoJ2FkZCcpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTIgcm91bmRlZC0zIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC4wMDAxIDQuMTY2NjNWMTUuODMzM000LjE2Njc1IDkuOTk5OTZIMTUuODMzNFwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgdGV4dC13aGl0ZVwiPkNyZWF0ZSBHcm91cDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiBncm91cHMubGVuZ3RoXCIgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiICpuZ0Zvcj1cImxldCBvYmogb2YgZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXZhbCBtYi03IHB5LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxhIGNsYXNzPVwicm9sZS10aXRsZSBteS0yIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImdyb3Vwc0RldGlhbHMob2JqKVwiPnt7b2JqLmdyb3VwTmFtZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOQSd9fTwvYT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHgtNSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjcmVhdGVHcm91cCgndmlldycsb2JqKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0wLjgzMzQ5NiA5Ljk5OTk5QzAuODMzNDk2IDkuOTk5OTkgNC4xNjY4MyAzLjMzMzMzIDEwLjAwMDIgMy4zMzMzM0MxNS44MzM1IDMuMzMzMzMgMTkuMTY2OCA5Ljk5OTk5IDE5LjE2NjggOS45OTk5OUMxOS4xNjY4IDkuOTk5OTkgMTUuODMzNSAxNi42NjY3IDEwLjAwMDIgMTYuNjY2N0M0LjE2NjgzIDE2LjY2NjcgMC44MzM0OTYgOS45OTk5OSAwLjgzMzQ5NiA5Ljk5OTk5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wMDAyIDEyLjVDMTEuMzgwOSAxMi41IDEyLjUwMDIgMTEuMzgwNyAxMi41MDAyIDkuOTk5OTlDMTIuNTAwMiA4LjYxOTI4IDExLjM4MDkgNy40OTk5OSAxMC4wMDAyIDcuNDk5OTlDOC42MTk0NSA3LjQ5OTk5IDcuNTAwMTYgOC42MTkyOCA3LjUwMDE2IDkuOTk5OTlDNy41MDAxNiAxMS4zODA3IDguNjE5NDUgMTIuNSAxMC4wMDAyIDEyLjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5tYW5hZ2Vfc3RvcmVzX2lzRGVsZXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImRlbGV0ZUdyb3VwcygnZGVsZXRlJyxvYmopXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNSA1LjAwMDAxSDQuMTY2NjdNNC4xNjY2NyA1LjAwMDAxSDE3LjVNNC4xNjY2NyA1LjAwMDAxVjE2LjY2NjdDNC4xNjY2NyAxNy4xMDg3IDQuMzQyMjYgMTcuNTMyNiA0LjY1NDgyIDE3Ljg0NTJDNC45NjczOCAxOC4xNTc3IDUuMzkxMzEgMTguMzMzMyA1LjgzMzMzIDE4LjMzMzNIMTQuMTY2N0MxNC42MDg3IDE4LjMzMzMgMTUuMDMyNiAxOC4xNTc3IDE1LjM0NTIgMTcuODQ1MkMxNS42NTc3IDE3LjUzMjYgMTUuODMzMyAxNy4xMDg3IDE1LjgzMzMgMTYuNjY2N1Y1LjAwMDAxSDQuMTY2NjdaTTYuNjY2NjcgNS4wMDAwMVYzLjMzMzM0QzYuNjY2NjcgMi44OTEzMSA2Ljg0MjI2IDIuNDY3MzkgNy4xNTQ4MiAyLjE1NDgzQzcuNDY3MzggMS44NDIyNyA3Ljg5MTMxIDEuNjY2NjcgOC4zMzMzMyAxLjY2NjY3SDExLjY2NjdDMTIuMTA4NyAxLjY2NjY3IDEyLjUzMjYgMS44NDIyNyAxMi44NDUyIDIuMTU0ODNDMTMuMTU3NyAyLjQ2NzM5IDEzLjMzMzMgMi44OTEzMSAxMy4zMzMzIDMuMzMzMzRWNS4wMDAwMU04LjMzMzMzIDkuMTY2NjdWMTQuMTY2N00xMS42NjY3IDkuMTY2NjdWMTQuMTY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRpdGxlIGZ3LXNlbWlib2xkIG15LTVcIj57e29iai5kZXNjcmlwdGlvbiB8fCAnTkEnfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gY2xhc3M9XCJtZS0zXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMuMDg5OTUgNi44ODM2OUwzLjAyNDAxIDYuOTg2NjlDMi4zMDM1OCA4LjI1NTU3IDMuMDYxMDEgOS44Nzk0NSA0LjQ2NDY0IDEwLjA2NjJDNC41ODYyNyAxMC4wODExIDQuNzAxMTIgMTAuMDg5MiA0LjgxNDUgMTAuMDg5MkM1LjU1MjU1IDEwLjA4OTIgNi4yMDUyMyA5Ljc3MjI5IDYuNjU5NTMgOS4yNzkxN0w3LjIxMjg2IDguNjc4NTRMNy43NjQzMiA5LjI4MDg5QzguMjEzNjcgOS43NzE3MSA4Ljg2NTIgMTAuMDg5MiA5LjYwNzc2IDEwLjA4OTJDMTAuMzQ3MSAxMC4wODkyIDExLjAwMjIgOS43NzEzNyAxMS40NTEyIDkuMjgwODlMMTIuMDA0NCA4LjY3NjY1TDEyLjU1NzYgOS4yODA4OUMxMy4wMDY2IDkuNzcxMzcgMTMuNjYxNyAxMC4wODkyIDE0LjQwMSAxMC4wODkyQzE1LjE0MDQgMTAuMDg5MiAxNS43OTU0IDkuNzcxMzcgMTYuMjQ0NSA5LjI4MDg5TDE2Ljc5NzcgOC42NzY2NUwxNy4zNTA4IDkuMjgwODlDMTcuNzk5OSA5Ljc3MTM3IDE4LjQ1NDkgMTAuMDg5MiAxOS4xOTQzIDEwLjA4OTJDMTkuMzA0MSAxMC4wODkyIDE5LjQyMjMgMTAuMDgxMSAxOS41NDMzIDEwLjA2NjNDMjAuOTc3MiA5Ljg3MTY4IDIxLjczNTUgOC4xNjM4NyAyMC45MTU1IDYuODg0MTlDMjAuOTE1NCA2Ljg4NDEzIDIwLjkxNTQgNi44ODQwNyAyMC45MTU0IDYuODg0MDJMMTguODA1NiAzLjU5NDI5TDE4LjgwNTYgMy41OTQyOUwxOC44MDQ2IDMuNTkyODJDMTguNzU4MiAzLjUyMDAyIDE4LjY2NDkgMy40NjQyMyAxOC41NTg0IDMuNDY0MjNINS40NDMwN0M1LjMzNjUgMy40NjQyMyA1LjI0MzI2IDMuNTIwMDIgNS4xOTY4MSAzLjU5MjgyTDUuMTk2MTkgMy41OTM3OUwzLjA4OTk1IDYuODgzNjlaTTQuODE4MTggMTIuNzQ5OUM0LjcxNjQ0IDEyLjc0OTkgNC42MTYgMTIuNzQ2OCA0LjUxNjkgMTIuNzQxVjE2LjY0MjhWMTguOTY0MkM0LjUxNjkgMTkuODIxMSA1LjIyNjYzIDIwLjUzNTcgNi4xMTk0MiAyMC41MzU3SDE3Ljg4MkMxOC43NzQ4IDIwLjUzNTcgMTkuNDg0NSAxOS44MjExIDE5LjQ4NDUgMTguOTY0MlYxNi42NDI4VjEyLjc0MTVDMTkuMzg3NCAxMi43NDcgMTkuMjg5MyAxMi43NDk5IDE5LjE5MDYgMTIuNzQ5OUMxOS4wMDIyIDEyLjc0OTkgMTguODE1NyAxMi43Mzk4IDE4LjYzMiAxMi43MjAyVjE2LjY0MjhWMTcuMzkyOEgxNy44ODJINi4xMTk0Mkg1LjM2OTQyVjE2LjY0MjhWMTIuNzIxQzUuMTg4NjYgMTIuNzQgNS4wMDQ3MiAxMi43NDk5IDQuODE4MTggMTIuNzQ5OVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VzLWxpc3QgZnctc2VtaWJvbGRcIj57e29iaj8uc3RvcmVDb3VudCB8fCAnLS0nfX0gU3RvcmVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48c3BhbiBjbGFzcz1cIm1lLTNcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xOTczXzE0MzA4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMjFWMTlDMTcuNSAxNy45MzkxIDE3LjA3ODYgMTYuOTIxNyAxNi4zMjg0IDE2LjE3MTZDMTUuNTc4MyAxNS40MjE0IDE0LjU2MDkgMTUgMTMuNSAxNUg1LjVDNC40MzkxMyAxNSAzLjQyMTcyIDE1LjQyMTQgMi42NzE1NyAxNi4xNzE2QzEuOTIxNDMgMTYuOTIxNyAxLjUgMTcuOTM5MSAxLjUgMTlWMjFNMjMuNSAyMVYxOUMyMy40OTkzIDE4LjExMzcgMjMuMjA0NCAxNy4yNTI4IDIyLjY2MTQgMTYuNTUyM0MyMi4xMTg0IDE1Ljg1MTkgMjEuMzU4MSAxNS4zNTE2IDIwLjUgMTUuMTNNMTYuNSAzLjEzQzE3LjM2MDQgMy4zNTAzIDE4LjEyMyAzLjg1MDcgMTguNjY3NiA0LjU1MjMxQzE5LjIxMjIgNS4yNTM5MiAxOS41MDc4IDYuMTE2ODMgMTkuNTA3OCA3LjAwNUMxOS41MDc4IDcuODkzMTcgMTkuMjEyMiA4Ljc1NjA4IDE4LjY2NzYgOS40NTc2OUMxOC4xMjMgMTAuMTU5MyAxNy4zNjA0IDEwLjY1OTcgMTYuNSAxMC44OE0xMy41IDdDMTMuNSA5LjIwOTE0IDExLjcwOTEgMTEgOS41IDExQzcuMjkwODYgMTEgNS41IDkuMjA5MTQgNS41IDdDNS41IDQuNzkwODYgNy4yOTA4NiAzIDkuNSAzQzExLjcwOTEgMyAxMy41IDQuNzkwODYgMTMuNSA3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xOTczXzE0MzA4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlcy1saXN0IGZ3LXNlbWlib2xkXCI+e3tvYmo/LnVzZXJDb3VudCB8fCAnLS0nfX0gTWVtYmVyczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwicGFnaW5hdGlvbi5saW1pdFwiIFtjdXJyZW50UGFnZV09XCJwYWdpbmF0aW9uLm9mZnNldFwiXHJcbiAgICAgICAgW3RvdGFsSXRlbXNdPVwicGFnaW5hdGlvbi50b3RhbENvdW50XCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIlxyXG4gICAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uU2l6ZSgpXCIgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZyAmJiAhZ3JvdXBzLmxlbmd0aFwiID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gTm8gZ3JvdXAgSWxsdXN0cmF0aW9uIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFncm91cHM/Lmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXktMjAgdy0xMDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0zNTBweCBkLWdyaWQgYWxpZ24taXRlbXMtY2VudGVyIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJteC1hdXRvXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL3N0b3Jlc0lsbHVzdHJhdGlvbi5wbmdcIiBhbHQ9XCJcIj5cclxuXHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWxsdXN0Y29udGVudFwiPiBTdGFydCBieSBjcmVhdGluZyBhIGdyb3VwPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViXCI+WW91IGNhbiB2aWV3IGFsbCB5b3VyIGdyb3VwcyBoZXJlPC9zcGFuPlxyXG4gICAgICAgICAgICBAaWYgKChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5tYW5hZ2Vfc3RvcmVzX2lzRWRpdCkge1xyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY3JlYXRlR3JvdXAoJ2FkZCcpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgbXQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05Ljk5OTg0IDQuMTY2NzVWMTUuODMzNE00LjE2NjUgMTAuMDAwMUgxNS44MzMyXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gXHJcbiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIEdyb3VwXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSA8bGliLWdyb3VwLWRldGFpbHM+PC9saWItZ3JvdXAtZGV0YWlscz4gLS0+Il19
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tbWFuYWdlLWdyb3Vwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc3RvcmVzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtZ3JvdXBzL3RhbmdvLW1hbmFnZS1ncm91cHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXN0b3Jlcy9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tbWFuYWdlLWdyb3Vwcy90YW5nby1tYW5hZ2UtZ3JvdXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQztBQUN2QiwySEFBMkg7QUFDM0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFHL0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTywwQkFBMEI7SUF1RDNCO0lBQ0E7SUFDQTtJQUNEO0lBekRDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBRWpELFlBQVksR0FBWSxLQUFLLENBQUM7SUFDOUIsTUFBTSxHQUFVLEVBQUUsQ0FBQztJQUNuQixTQUFTLENBQU07SUFDZixTQUFTLENBQU07SUFDZixVQUFVLEdBQVE7UUFDaEI7WUFDRSxXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLE1BQU0sRUFBRTtnQkFDTixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtnQkFDNUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUU7Z0JB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R0FBRyxJQUFJLENBQUM7UUFDdkMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDL0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFFZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBNVFVLDBCQUEwQjsyRkFBMUIsMEJBQTBCLG9HQ3JCdkMsK3FYQTJJb0Q7OzJGRHRIdkMsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5Qjt5S0FLekIsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25Jbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIE9uRGVzdHJveSxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG4vLyBpbXBvcnQgeyBDb252ZXJzaW9uU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1hdXRoL2xpYi9jb21wb25lbnRzL3RhbmdvLWF1dGgtc2lnbnVwL3N0ZXAvc2VydmljZXMvY29udmVyc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3JlYXRlR3JvdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vY3JlYXRlLWdyb3VwL2NyZWF0ZS1ncm91cC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgR3JvdXBEZWxldGVQb3B1cENvbXBvbmVudCB9IGZyb20gXCIuLi9ncm91cC1kZWxldGUtcG9wdXAvZ3JvdXAtZGVsZXRlLXBvcHVwLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHcm91cFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZ3JvdXAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXRhbmdvLW1hbmFnZS1ncm91cHNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3RhbmdvLW1hbmFnZS1ncm91cHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3RhbmdvLW1hbmFnZS1ncm91cHMuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhbmdvTWFuYWdlR3JvdXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBPdXRwdXQoKSBkYXRhRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgT3BlbmRyb3Bkb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ3JvdXBzOiBhbnlbXSA9IFtdO1xyXG4gIGdyb3VwRGF0YTogYW55O1xyXG4gIGdyb3VwX3JlcTogYW55O1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgRGVzY3JpcHRpb246IFwiQWNjb3VudCBTdGF0dXNcIixcclxuICAgICAgSXNzdWVzOiBbXHJcbiAgICAgICAgeyB0ZXh0OiBcImlzc3VlIDFcIiwgaWQ6IFwiMVwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcImlzc3VlIDJcIiwgaWQ6IFwiMlwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcImlzc3VlIDNcIiwgaWQ6IFwiM1wiIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBEZXNjcmlwdGlvbjogXCJTdWJzY3JpcHRpb24gUGxhblwiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwib2JqZWN0IDFcIiwgaWQ6IFwiMVwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIm9iamVjdCAyXCIsIGlkOiBcIjJcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJvYmplY3QgM1wiLCBpZDogXCIzXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIERlc2NyaXB0aW9uOiBcIlByb2Nlc3NpbmcgVHlwZVwiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwic2VsZWN0IDFcIiwgaWQ6IFwiMVwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcInNlbGVjdCAyXCIsIGlkOiBcIjJcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJzZWxlY3QgM1wiLCBpZDogXCIzXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIERlc2NyaXB0aW9uOiBcIkRhdGEgVHlwZVwiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwic2VsZWN0IDFcIiwgaWQ6IFwiMVwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcInNlbGVjdCAyXCIsIGlkOiBcIjJcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJzZWxlY3QgM1wiLCBpZDogXCIzXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgXTtcclxuICBzaG93ZHJvcGRvd246IGFueTtcclxuICBzZWxlY3RlZFZhbHVlczogc3RyaW5nW10gPSBbXTtcclxuICBzZWxlY3RlZFZhbHVlc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgJGhlYWRlckZpbHRlcnM6IGFueTtcclxuICBwcml2YXRlIGRldGFjaCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcGFnaW5hdGlvbiA9IHtcclxuICAgIG9mZnNldDogMSxcclxuICAgIGxpbWl0OiAxMCxcclxuICAgIHRvdGFsQ291bnQ6IDAsXHJcbiAgfTtcclxuICBwYWdpbmF0aW9uU2l6ZXM6IG51bWJlcltdID0gWzEwLCAyMCwgMzBdO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBncm91cFNlcnZpY2U6IEdyb3VwU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQgeyAgICBcclxuICAgIHRoaXMuZGV0YWNoLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRldGFjaC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDooZGF0YTphbnkpPT57XHJcbiAgICAgICAgaWYoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IGRhdGE7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwX3JlcSA9IHsgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LCBvZmZzZXQ6IDEsIGxpbWl0OiAxMCB9O1xyXG4gICAgICAgICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRHcm91cHMoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYodGhpcy5ncm91cF9yZXEuc2VhcmNoVmFsdWU9PVwiXCIgJiYgdGhpcy5ncm91cF9yZXEuc2VhcmNoVmFsdWUhPXVuZGVmaW5lZCkge1xyXG4gICAgICBkZWxldGUgdGhpcy5ncm91cF9yZXFbJ3NlYXJjaFZhbHVlJ107XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyb3VwU2VydmljZS5nZXRHcm91cHModGhpcy5ncm91cF9yZXEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwRGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5ncm91cHMgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgICAgIG9mZnNldDogcmVzLmRhdGE/Lm9mZnNldFxyXG4gICAgICAgICAgICAgID8gcmVzPy5kYXRhLm9mZnNldFxyXG4gICAgICAgICAgICAgIDogdGhpcy5wYWdpbmF0aW9uLm9mZnNldCxcclxuICAgICAgICAgICAgbGltaXQ6IHJlcy5kYXRhPy5saW1pdCA/IHJlcz8uZGF0YS5saW1pdCA6IHRoaXMucGFnaW5hdGlvbi5saW1pdCxcclxuICAgICAgICAgICAgdG90YWxDb3VudDogcmVzLmRhdGEuY291bnQsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKHJlcy5kYXRhLmNvdW50IDwgMTApIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbcmVzLmRhdGEuY291bnRdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmc9ZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5ncm91cHMgPSBbXTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZz1mYWxzZTtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZGluZz1mYWxzZTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmdyb3VwcyA9IFtdO1xyXG4gICAgICAgIHRoaXMubG9hZGluZz1mYWxzZTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNlYXJjaERhdGEoKSB7XHJcbiAgICB0aGlzLmdyb3VwX3JlcSA9IHtcclxuICAgICAgLi4udGhpcy5ncm91cF9yZXEsXHJcbiAgICAgIC4uLnsgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5ncm91cF9yZXEub2Zmc2V0ID0gTnVtYmVyKHBhZ2VPZmZzZXQpO1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uLm9mZnNldCA9IE51bWJlcihwYWdlT2Zmc2V0KTtcclxuICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICAgIHRoaXMuZ3JvdXBfcmVxLmxpbWl0ID0gTnVtYmVyKHBhZ2VTaXplKTtcclxuICAgIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9IE51bWJlcihwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLmdyb3VwX3JlcS5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uLm9mZnNldCA9IDE7XHJcbiAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gIH1cclxuICAvLyBpc0xpbmtBY3RpdmUobGluazogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5yb3V0ZXIuaXNBY3RpdmUobGluaywgdHJ1ZSk7XHJcbiAgLy8gfVxyXG4gIHBhZ2luYXRpb25TaXplKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uPy50b3RhbENvdW50IDwgMTApIHtcclxuICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbi5saW1pdDtcclxuICAgIH1cclxuICB9XHJcbiAgZ3JvdXBzRGV0aWFscyh2YWw6IGFueSkge1xyXG4gICAgY29uc3QgZGF0YVRvR3JvdXAgPSBcIkdyb3VwIERldGFpbHMgVmFsdWVcIjtcclxuICAgIHRoaXMuZGF0YUV2ZW50LmVtaXQoZGF0YVRvR3JvdXApO1xyXG4gICAgdGhpcy5ncm91cFNlcnZpY2UuZ3JvdXBDb21tcy5uZXh0KHZhbCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGVja2JveChpc3N1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjdXJyZW50SXNzdWVzID0gdGhpcy5kYXRhT2JqZWN0W2luZGV4XS5Jc3N1ZXM7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaW5kZXhdID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSB8fCBbXTtcclxuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XTsgLy8gUmV0cmlldmUgc2VsZWN0ZWQgdmFsdWVzIGFycmF5IGZvciB0aGUgY3VycmVudCBkcm9wZG93biBpbmRleFxyXG5cclxuICAgIGlmIChpc3N1ZSA9PT0gXCJTZWxlY3QgQWxsXCIpIHtcclxuICAgICAgY29uc3QgY3VycmVudElzc3VlcyA9IHRoaXMuZGF0YU9iamVjdFtpbmRleF0uSXNzdWVzLm1hcChcclxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRleHRcclxuICAgICAgKTtcclxuICAgICAgaWYgKHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gY3VycmVudElzc3Vlcy5sZW5ndGgpIHtcclxuICAgICAgICAvLyBJZiBhbGwgaXRlbXMgYXJlIGFscmVhZHkgc2VsZWN0ZWQsIGRlc2VsZWN0IGFsbFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVtpbmRleF0gPSBbXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBPdGhlcndpc2UsIHNlbGVjdCBhbGwgaXRlbXNcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaW5kZXhdID0gWy4uLmN1cnJlbnRJc3N1ZXNdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMoaXNzdWUpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XSA9IHNlbGVjdGVkVmFsdWVzLmZpbHRlcihcclxuICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0gIT09IGlzc3VlXHJcbiAgICAgICAgKTsgLy8gRGVzZWxlY3QgdGhlIGluZGl2aWR1YWwgaXRlbSBpZiBhbHJlYWR5IHNlbGVjdGVkXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XS5wdXNoKGlzc3VlKTsgLy8gU2VsZWN0IHRoZSBpbmRpdmlkdWFsIGl0ZW0gaWYgbm90IGFscmVhZHkgc2VsZWN0ZWRcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBcIlNlbGVjdCBBbGxcIiBjaGVja2JveCBzdGF0dXMgYmFzZWQgb24gc2VsZWN0ZWQgdmFsdWVzXHJcbiAgICBjb25zdCBzZWxlY3RBbGxJZCA9IGBzZWxlY3RhbGwke2luZGV4fWA7XHJcbiAgICBjb25zdCBzZWxlY3RBbGxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgIHNlbGVjdEFsbElkXHJcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAoc2VsZWN0QWxsRWxlbWVudCkge1xyXG4gICAgICBzZWxlY3RBbGxFbGVtZW50LmNoZWNrZWQgPSBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IGN1cnJlbnRJc3N1ZXMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBjaGVja2JveGVzIGJhc2VkIG9uIHNlbGVjdGVkIHZhbHVlc1xyXG4gICAgY3VycmVudElzc3Vlcy5mb3JFYWNoKChpdGVtOiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgaXNDaGVja2VkID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5W2luZGV4XS5pbmNsdWRlcyhpdGVtKTtcclxuICAgICAgY29uc3QgY2hlY2tib3hJZCA9IGBvcHRpb24ke2l0ZW19YDtcclxuICAgICAgY29uc3QgY2hlY2tib3hFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgICAgY2hlY2tib3hJZFxyXG4gICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgIGlmIChjaGVja2JveEVsZW1lbnQpIHtcclxuICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IGlzQ2hlY2tlZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBSZXNldCgpIHtcclxuICAgIC8vIHRoaXMuZGF0YU9iamVjdCA9IFtdO1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIEFwcGx5KCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaV07XHJcbiAgICAgIGNvbnN0IGlzc3VlcyA9IHRoaXMuZGF0YU9iamVjdFtpXS5Jc3N1ZXM7XHJcblxyXG4gICAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbaV0gPSBzZWxlY3RlZFZhbHVlcy5tYXAoKHNlbGVjdGVkSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXNzdWUgPSBpc3N1ZXMuZmluZChcclxuICAgICAgICAgICAgKGlzc3VlSXRlbTogYW55KSA9PiBpc3N1ZUl0ZW0udGV4dCA9PT0gc2VsZWN0ZWRJZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiBpc3N1ZSA/IGlzc3VlIDogXCJcIjsgLy8gR2V0IHRoZSB0ZXh0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGlkXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVHcm91cCh0eXBlOiBhbnksIGdyb3VwPzogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQ3JlYXRlR3JvdXBDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6IFwibWRcIixcclxuICAgICAgc2Nyb2xsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHR5cGU7XHJcbiAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZWRpdEdyb3VwID0gZ3JvdXA7XHJcbiAgICB9XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICB9LCAocmVhc29uKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUdyb3VwcyhkYXRhOiBhbnksIGdyb3VwOiBhbnkpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihHcm91cERlbGV0ZVBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnR5cGUgPSBkYXRhO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGVsZXRlR3JvdXAgPSBncm91cDtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXMpID0+IHtcclxuICAgICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgIH0sIChyZWFzb24pID0+IHtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgbWItMTBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgbWItMlwiPkdyb3Vwczwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+e3tncm91cERhdGE/LmNvdW50IHx8IDB9fSB0b3RhbCBncm91cHM8L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKGdyb3Vwcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmICgoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8ubWFuYWdlX3N0b3Jlc19pc0VkaXQpIHtcclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjcmVhdGVHcm91cCgnYWRkJylcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMiByb3VuZGVkLTMgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMDEgNC4xNjY2M1YxNS44MzMzTTQuMTY2NzUgOS45OTk5NkgxNS44MzM0XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMiB0ZXh0LXdoaXRlXCI+Q3JlYXRlIEdyb3VwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmIGdyb3Vwcy5sZW5ndGhcIiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCIgKm5nRm9yPVwibGV0IG9iaiBvZiBncm91cHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItdmFsIG1iLTcgcHktN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGEgY2xhc3M9XCJyb2xlLXRpdGxlIG15LTIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZ3JvdXBzRGV0aWFscyhvYmopXCI+e3tvYmouZ3JvdXBOYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05BJ319PC9hPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC01IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNyZWF0ZUdyb3VwKCd2aWV3JyxvYmopXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTAuODMzNDk2IDkuOTk5OTlDMC44MzM0OTYgOS45OTk5OSA0LjE2NjgzIDMuMzMzMzMgMTAuMDAwMiAzLjMzMzMzQzE1LjgzMzUgMy4zMzMzMyAxOS4xNjY4IDkuOTk5OTkgMTkuMTY2OCA5Ljk5OTk5QzE5LjE2NjggOS45OTk5OSAxNS44MzM1IDE2LjY2NjcgMTAuMDAwMiAxNi42NjY3QzQuMTY2ODMgMTYuNjY2NyAwLjgzMzQ5NiA5Ljk5OTk5IDAuODMzNDk2IDkuOTk5OTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjAwMDIgMTIuNUMxMS4zODA5IDEyLjUgMTIuNTAwMiAxMS4zODA3IDEyLjUwMDIgOS45OTk5OUMxMi41MDAyIDguNjE5MjggMTEuMzgwOSA3LjQ5OTk5IDEwLjAwMDIgNy40OTk5OUM4LjYxOTQ1IDcuNDk5OTkgNy41MDAxNiA4LjYxOTI4IDcuNTAwMTYgOS45OTk5OUM3LjUwMDE2IDExLjM4MDcgOC42MTk0NSAxMi41IDEwLjAwMDIgMTIuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/Lm1hbmFnZV9zdG9yZXNfaXNEZWxldGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZGVsZXRlR3JvdXBzKCdkZWxldGUnLG9iailcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi41IDUuMDAwMDFINC4xNjY2N000LjE2NjY3IDUuMDAwMDFIMTcuNU00LjE2NjY3IDUuMDAwMDFWMTYuNjY2N0M0LjE2NjY3IDE3LjEwODcgNC4zNDIyNiAxNy41MzI2IDQuNjU0ODIgMTcuODQ1MkM0Ljk2NzM4IDE4LjE1NzcgNS4zOTEzMSAxOC4zMzMzIDUuODMzMzMgMTguMzMzM0gxNC4xNjY3QzE0LjYwODcgMTguMzMzMyAxNS4wMzI2IDE4LjE1NzcgMTUuMzQ1MiAxNy44NDUyQzE1LjY1NzcgMTcuNTMyNiAxNS44MzMzIDE3LjEwODcgMTUuODMzMyAxNi42NjY3VjUuMDAwMDFINC4xNjY2N1pNNi42NjY2NyA1LjAwMDAxVjMuMzMzMzRDNi42NjY2NyAyLjg5MTMxIDYuODQyMjYgMi40NjczOSA3LjE1NDgyIDIuMTU0ODNDNy40NjczOCAxLjg0MjI3IDcuODkxMzEgMS42NjY2NyA4LjMzMzMzIDEuNjY2NjdIMTEuNjY2N0MxMi4xMDg3IDEuNjY2NjcgMTIuNTMyNiAxLjg0MjI3IDEyLjg0NTIgMi4xNTQ4M0MxMy4xNTc3IDIuNDY3MzkgMTMuMzMzMyAyLjg5MTMxIDEzLjMzMzMgMy4zMzMzNFY1LjAwMDAxTTguMzMzMzMgOS4xNjY2N1YxNC4xNjY3TTExLjY2NjcgOS4xNjY2N1YxNC4xNjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGUgZnctc2VtaWJvbGQgbXktNVwiPnt7b2JqLmRlc2NyaXB0aW9uIHx8ICdOQSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48c3BhbiBjbGFzcz1cIm1lLTNcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMy4wODk5NSA2Ljg4MzY5TDMuMDI0MDEgNi45ODY2OUMyLjMwMzU4IDguMjU1NTcgMy4wNjEwMSA5Ljg3OTQ1IDQuNDY0NjQgMTAuMDY2MkM0LjU4NjI3IDEwLjA4MTEgNC43MDExMiAxMC4wODkyIDQuODE0NSAxMC4wODkyQzUuNTUyNTUgMTAuMDg5MiA2LjIwNTIzIDkuNzcyMjkgNi42NTk1MyA5LjI3OTE3TDcuMjEyODYgOC42Nzg1NEw3Ljc2NDMyIDkuMjgwODlDOC4yMTM2NyA5Ljc3MTcxIDguODY1MiAxMC4wODkyIDkuNjA3NzYgMTAuMDg5MkMxMC4zNDcxIDEwLjA4OTIgMTEuMDAyMiA5Ljc3MTM3IDExLjQ1MTIgOS4yODA4OUwxMi4wMDQ0IDguNjc2NjVMMTIuNTU3NiA5LjI4MDg5QzEzLjAwNjYgOS43NzEzNyAxMy42NjE3IDEwLjA4OTIgMTQuNDAxIDEwLjA4OTJDMTUuMTQwNCAxMC4wODkyIDE1Ljc5NTQgOS43NzEzNyAxNi4yNDQ1IDkuMjgwODlMMTYuNzk3NyA4LjY3NjY1TDE3LjM1MDggOS4yODA4OUMxNy43OTk5IDkuNzcxMzcgMTguNDU0OSAxMC4wODkyIDE5LjE5NDMgMTAuMDg5MkMxOS4zMDQxIDEwLjA4OTIgMTkuNDIyMyAxMC4wODExIDE5LjU0MzMgMTAuMDY2M0MyMC45NzcyIDkuODcxNjggMjEuNzM1NSA4LjE2Mzg3IDIwLjkxNTUgNi44ODQxOUMyMC45MTU0IDYuODg0MTMgMjAuOTE1NCA2Ljg4NDA3IDIwLjkxNTQgNi44ODQwMkwxOC44MDU2IDMuNTk0MjlMMTguODA1NiAzLjU5NDI5TDE4LjgwNDYgMy41OTI4MkMxOC43NTgyIDMuNTIwMDIgMTguNjY0OSAzLjQ2NDIzIDE4LjU1ODQgMy40NjQyM0g1LjQ0MzA3QzUuMzM2NSAzLjQ2NDIzIDUuMjQzMjYgMy41MjAwMiA1LjE5NjgxIDMuNTkyODJMNS4xOTYxOSAzLjU5Mzc5TDMuMDg5OTUgNi44ODM2OVpNNC44MTgxOCAxMi43NDk5QzQuNzE2NDQgMTIuNzQ5OSA0LjYxNiAxMi43NDY4IDQuNTE2OSAxMi43NDFWMTYuNjQyOFYxOC45NjQyQzQuNTE2OSAxOS44MjExIDUuMjI2NjMgMjAuNTM1NyA2LjExOTQyIDIwLjUzNTdIMTcuODgyQzE4Ljc3NDggMjAuNTM1NyAxOS40ODQ1IDE5LjgyMTEgMTkuNDg0NSAxOC45NjQyVjE2LjY0MjhWMTIuNzQxNUMxOS4zODc0IDEyLjc0NyAxOS4yODkzIDEyLjc0OTkgMTkuMTkwNiAxMi43NDk5QzE5LjAwMjIgMTIuNzQ5OSAxOC44MTU3IDEyLjczOTggMTguNjMyIDEyLjcyMDJWMTYuNjQyOFYxNy4zOTI4SDE3Ljg4Mkg2LjExOTQySDUuMzY5NDJWMTYuNjQyOFYxMi43MjFDNS4xODg2NiAxMi43NCA1LjAwNDcyIDEyLjc0OTkgNC44MTgxOCAxMi43NDk5WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXMtbGlzdCBmdy1zZW1pYm9sZFwiPnt7b2JqPy5zdG9yZUNvdW50IHx8ICctLSd9fSBTdG9yZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuIGNsYXNzPVwibWUtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjUgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE5NzNfMTQzMDgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAyMVYxOUMxNy41IDE3LjkzOTEgMTcuMDc4NiAxNi45MjE3IDE2LjMyODQgMTYuMTcxNkMxNS41NzgzIDE1LjQyMTQgMTQuNTYwOSAxNSAxMy41IDE1SDUuNUM0LjQzOTEzIDE1IDMuNDIxNzIgMTUuNDIxNCAyLjY3MTU3IDE2LjE3MTZDMS45MjE0MyAxNi45MjE3IDEuNSAxNy45MzkxIDEuNSAxOVYyMU0yMy41IDIxVjE5QzIzLjQ5OTMgMTguMTEzNyAyMy4yMDQ0IDE3LjI1MjggMjIuNjYxNCAxNi41NTIzQzIyLjExODQgMTUuODUxOSAyMS4zNTgxIDE1LjM1MTYgMjAuNSAxNS4xM00xNi41IDMuMTNDMTcuMzYwNCAzLjM1MDMgMTguMTIzIDMuODUwNyAxOC42Njc2IDQuNTUyMzFDMTkuMjEyMiA1LjI1MzkyIDE5LjUwNzggNi4xMTY4MyAxOS41MDc4IDcuMDA1QzE5LjUwNzggNy44OTMxNyAxOS4yMTIyIDguNzU2MDggMTguNjY3NiA5LjQ1NzY5QzE4LjEyMyAxMC4xNTkzIDE3LjM2MDQgMTAuNjU5NyAxNi41IDEwLjg4TTEzLjUgN0MxMy41IDkuMjA5MTQgMTEuNzA5MSAxMSA5LjUgMTFDNy4yOTA4NiAxMSA1LjUgOS4yMDkxNCA1LjUgN0M1LjUgNC43OTA4NiA3LjI5MDg2IDMgOS41IDNDMTEuNzA5MSAzIDEzLjUgNC43OTA4NiAxMy41IDdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE5NzNfMTQzMDhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VzLWxpc3QgZnctc2VtaWJvbGRcIj57e29iaj8udXNlckNvdW50fX0gTWVtYmVyczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwicGFnaW5hdGlvbi5saW1pdFwiIFtjdXJyZW50UGFnZV09XCJwYWdpbmF0aW9uLm9mZnNldFwiXHJcbiAgICAgICAgW3RvdGFsSXRlbXNdPVwicGFnaW5hdGlvbi50b3RhbENvdW50XCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIlxyXG4gICAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uU2l6ZSgpXCIgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZyAmJiAhZ3JvdXBzLmxlbmd0aFwiID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gTm8gZ3JvdXAgSWxsdXN0cmF0aW9uIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFncm91cHM/Lmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXktMjAgdy0xMDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0zNTBweCBkLWdyaWQgYWxpZ24taXRlbXMtY2VudGVyIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJteC1hdXRvXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL3N0b3Jlc0lsbHVzdHJhdGlvbi5wbmdcIiBhbHQ9XCJcIj5cclxuXHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWxsdXN0Y29udGVudFwiPiBTdGFydCBieSBjcmVhdGluZyBhIGdyb3VwPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViXCI+WW91IGNhbiB2aWV3IGFsbCB5b3VyIGdyb3VwcyBoZXJlPC9zcGFuPlxyXG4gICAgICAgICAgICBAaWYgKChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy5tYW5hZ2Vfc3RvcmVzX2lzRWRpdCkge1xyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY3JlYXRlR3JvdXAoJ2FkZCcpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgbXQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05Ljk5OTg0IDQuMTY2NzVWMTUuODMzNE00LjE2NjUgMTAuMDAwMUgxNS44MzMyXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gXHJcbiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIEdyb3VwXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSA8bGliLWdyb3VwLWRldGFpbHM+PC9saWItZ3JvdXAtZGV0YWlscz4gLS0+Il19