@po-ui/ng-components 17.26.13 → 17.26.14

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.
Files changed (30) hide show
  1. package/esm2022/lib/components/po-table/po-table.component.mjs +380 -399
  2. package/esm2022/lib/services/po-i18n/index.mjs +2 -1
  3. package/esm2022/lib/services/po-i18n/interfaces/po-i18n-config-context.interface.mjs +2 -0
  4. package/esm2022/lib/services/po-i18n/interfaces/po-i18n-config.interface.mjs +1 -1
  5. package/esm2022/lib/services/po-i18n/po-i18n-base.service.mjs +1 -1
  6. package/esm2022/lib/services/po-i18n/po-i18n-config-injection-token.mjs +1 -1
  7. package/esm2022/lib/services/po-i18n/po-i18n.module.mjs +7 -8
  8. package/esm2022/lib/services/po-i18n/po-i18n.service.mjs +26 -3
  9. package/fesm2022/po-ui-ng-components.mjs +411 -408
  10. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  11. package/lib/components/po-table/po-table.component.d.ts +1 -0
  12. package/lib/services/po-i18n/index.d.ts +1 -0
  13. package/lib/services/po-i18n/interfaces/po-i18n-config-context.interface.d.ts +18 -0
  14. package/lib/services/po-i18n/interfaces/po-i18n-config.interface.d.ts +2 -1
  15. package/lib/services/po-i18n/po-i18n-config-injection-token.d.ts +1 -1
  16. package/lib/services/po-i18n/po-i18n.module.d.ts +1 -2
  17. package/lib/services/po-i18n/po-i18n.service.d.ts +2 -1
  18. package/package.json +4 -4
  19. package/po-ui-ng-components-17.26.14.tgz +0 -0
  20. package/schematics/ng-add/index.js +1 -1
  21. package/schematics/ng-update/v14/index.js +1 -1
  22. package/schematics/ng-update/v15/index.js +1 -1
  23. package/schematics/ng-update/v16/index.js +1 -1
  24. package/schematics/ng-update/v17/index.js +1 -1
  25. package/schematics/ng-update/v2/index.js +1 -1
  26. package/schematics/ng-update/v3/index.js +1 -1
  27. package/schematics/ng-update/v4/index.js +1 -1
  28. package/schematics/ng-update/v5/index.js +1 -1
  29. package/schematics/ng-update/v6/index.js +1 -1
  30. package/po-ui-ng-components-17.26.13.tgz +0 -0
@@ -384,15 +384,15 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_2_Template(rf
384
384
  function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_ng_template_1_Template(rf, ctx) { }
385
385
  const _c19 = (a0, a1) => ({ row: a0, rowIndex: a1 });
386
386
  function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template(rf, ctx) { if (rf & 1) {
387
- const _r109 = i0.ɵɵgetCurrentView();
387
+ const _r108 = i0.ɵɵgetCurrentView();
388
388
  i0.ɵɵelementStart(0, "td", 99);
389
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r109); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r107 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r107.toggleDetail(row_r93)); });
389
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r108); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r106 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r106.toggleDetail(row_r93)); });
390
390
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_ng_template_1_Template, 0, 0, "ng-template", 100);
391
391
  i0.ɵɵelementEnd();
392
392
  } if (rf & 2) {
393
- const ctx_r110 = i0.ɵɵnextContext();
394
- const row_r93 = ctx_r110.$implicit;
395
- const rowIndex_r94 = ctx_r110.index;
393
+ const ctx_r109 = i0.ɵɵnextContext();
394
+ const row_r93 = ctx_r109.$implicit;
395
+ const rowIndex_r94 = ctx_r109.index;
396
396
  i0.ɵɵnextContext(3);
397
397
  const _r13 = i0.ɵɵreference(15);
398
398
  i0.ɵɵadvance();
@@ -402,197 +402,181 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_ng_template_0_
402
402
  function PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_Template(rf, ctx) { if (rf & 1) {
403
403
  i0.ɵɵtemplate(0, PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_ng_template_0_Template, 0, 0, "ng-template", 100);
404
404
  } if (rf & 2) {
405
- const ctx_r112 = i0.ɵɵnextContext();
406
- const row_r93 = ctx_r112.$implicit;
407
- const rowIndex_r94 = ctx_r112.index;
405
+ const ctx_r111 = i0.ɵɵnextContext();
406
+ const row_r93 = ctx_r111.$implicit;
407
+ const rowIndex_r94 = ctx_r111.index;
408
408
  i0.ɵɵnextContext(3);
409
409
  const _r25 = i0.ɵɵreference(27);
410
410
  i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r93, rowIndex_r94));
411
411
  } }
412
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_ng_template_1_Template(rf, ctx) { }
413
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
414
- const _r116 = i0.ɵɵgetCurrentView();
415
- i0.ɵɵelementStart(0, "td", 99);
416
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r116); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r114 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r114.toggleDetail(row_r93)); });
417
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_ng_template_1_Template, 0, 0, "ng-template", 100);
418
- i0.ɵɵelementEnd();
419
- } if (rf & 2) {
420
- const ctx_r117 = i0.ɵɵnextContext();
421
- const row_r93 = ctx_r117.$implicit;
422
- const rowIndex_r94 = ctx_r117.index;
423
- i0.ɵɵnextContext(3);
424
- const _r13 = i0.ɵɵreference(15);
425
- i0.ɵɵadvance();
426
- i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r93, rowIndex_r94));
427
- } }
428
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
412
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
429
413
  i0.ɵɵelementContainer(0);
430
414
  } }
431
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_2_Template(rf, ctx) { if (rf & 1) {
415
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_2_Template(rf, ctx) { if (rf & 1) {
432
416
  i0.ɵɵelementStart(0, "span");
433
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_2_ng_container_1_Template, 1, 0, "ng-container", 78);
417
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_2_ng_container_1_Template, 1, 0, "ng-container", 78);
434
418
  i0.ɵɵelementEnd();
435
419
  } if (rf & 2) {
436
- const column_r118 = i0.ɵɵnextContext().$implicit;
420
+ const column_r112 = i0.ɵɵnextContext().$implicit;
437
421
  const row_r93 = i0.ɵɵnextContext().$implicit;
438
- const ctx_r120 = i0.ɵɵnextContext(3);
422
+ const ctx_r114 = i0.ɵɵnextContext(3);
439
423
  i0.ɵɵadvance();
440
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r120.getTemplate(column_r118))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c18, ctx_r120.getCellData(row_r93, column_r118)));
424
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r114.getTemplate(column_r112))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c18, ctx_r114.getCellData(row_r93, column_r112)));
441
425
  } }
442
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
426
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
443
427
  i0.ɵɵelementContainer(0);
444
428
  } }
445
429
  const _c20 = (a0, a1) => ({ row: a0, column: a1 });
446
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_3_Template(rf, ctx) { if (rf & 1) {
430
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_3_Template(rf, ctx) { if (rf & 1) {
447
431
  i0.ɵɵelementStart(0, "span");
448
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_3_ng_container_1_Template, 1, 0, "ng-container", 78);
432
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_3_ng_container_1_Template, 1, 0, "ng-container", 78);
449
433
  i0.ɵɵelementEnd();
450
434
  } if (rf & 2) {
451
- const column_r118 = i0.ɵɵnextContext().$implicit;
435
+ const column_r112 = i0.ɵɵnextContext().$implicit;
452
436
  const row_r93 = i0.ɵɵnextContext().$implicit;
453
- const ctx_r121 = i0.ɵɵnextContext(3);
437
+ const ctx_r115 = i0.ɵɵnextContext(3);
454
438
  i0.ɵɵadvance();
455
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r121.tableCellTemplate == null ? null : ctx_r121.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c20, row_r93, column_r118));
439
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r115.tableCellTemplate == null ? null : ctx_r115.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c20, row_r93, column_r112));
456
440
  } }
457
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_4_Template(rf, ctx) { if (rf & 1) {
441
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_4_Template(rf, ctx) { if (rf & 1) {
458
442
  i0.ɵɵelementStart(0, "span");
459
443
  i0.ɵɵtext(1);
460
444
  i0.ɵɵelementEnd();
461
445
  } if (rf & 2) {
462
- const column_r118 = i0.ɵɵnextContext().$implicit;
446
+ const column_r112 = i0.ɵɵnextContext().$implicit;
463
447
  const row_r93 = i0.ɵɵnextContext().$implicit;
464
- const ctx_r122 = i0.ɵɵnextContext(3);
448
+ const ctx_r116 = i0.ɵɵnextContext(3);
465
449
  i0.ɵɵadvance();
466
- i0.ɵɵtextInterpolate1(" ", ctx_r122.getBooleanLabel(ctx_r122.getCellData(row_r93, column_r118), column_r118), " ");
450
+ i0.ɵɵtextInterpolate1(" ", ctx_r116.getBooleanLabel(ctx_r116.getCellData(row_r93, column_r112), column_r112), " ");
467
451
  } }
468
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_5_Template(rf, ctx) { if (rf & 1) {
452
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_5_Template(rf, ctx) { if (rf & 1) {
469
453
  i0.ɵɵelementStart(0, "span");
470
454
  i0.ɵɵtext(1);
471
455
  i0.ɵɵpipe(2, "currency");
472
456
  i0.ɵɵelementEnd();
473
457
  } if (rf & 2) {
474
- const column_r118 = i0.ɵɵnextContext().$implicit;
458
+ const column_r112 = i0.ɵɵnextContext().$implicit;
475
459
  const row_r93 = i0.ɵɵnextContext().$implicit;
476
- const ctx_r123 = i0.ɵɵnextContext(3);
460
+ const ctx_r117 = i0.ɵɵnextContext(3);
477
461
  i0.ɵɵadvance();
478
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r123.getCellData(row_r93, column_r118), column_r118.format, "symbol", "1.2-2"), " ");
462
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r117.getCellData(row_r93, column_r112), column_r112.format, "symbol", "1.2-2"), " ");
479
463
  } }
480
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_6_Template(rf, ctx) { if (rf & 1) {
464
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_6_Template(rf, ctx) { if (rf & 1) {
481
465
  i0.ɵɵelementStart(0, "span");
482
466
  i0.ɵɵtext(1);
483
467
  i0.ɵɵpipe(2, "date");
484
468
  i0.ɵɵelementEnd();
485
469
  } if (rf & 2) {
486
- const column_r118 = i0.ɵɵnextContext().$implicit;
470
+ const column_r112 = i0.ɵɵnextContext().$implicit;
487
471
  const row_r93 = i0.ɵɵnextContext().$implicit;
488
- const ctx_r124 = i0.ɵɵnextContext(3);
472
+ const ctx_r118 = i0.ɵɵnextContext(3);
489
473
  i0.ɵɵadvance();
490
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r124.getCellData(row_r93, column_r118), column_r118.format || "dd/MM/yyyy"), " ");
474
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r118.getCellData(row_r93, column_r112), column_r112.format || "dd/MM/yyyy"), " ");
491
475
  } }
492
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_7_Template(rf, ctx) { if (rf & 1) {
476
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_7_Template(rf, ctx) { if (rf & 1) {
493
477
  i0.ɵɵelementStart(0, "span");
494
478
  i0.ɵɵtext(1);
495
479
  i0.ɵɵpipe(2, "po_time");
496
480
  i0.ɵɵelementEnd();
497
481
  } if (rf & 2) {
498
- const column_r118 = i0.ɵɵnextContext().$implicit;
482
+ const column_r112 = i0.ɵɵnextContext().$implicit;
499
483
  const row_r93 = i0.ɵɵnextContext().$implicit;
500
- const ctx_r125 = i0.ɵɵnextContext(3);
484
+ const ctx_r119 = i0.ɵɵnextContext(3);
501
485
  i0.ɵɵadvance();
502
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r125.getCellData(row_r93, column_r118), column_r118.format || "HH:mm:ss.ffffff"), " ");
486
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r119.getCellData(row_r93, column_r112), column_r112.format || "HH:mm:ss.ffffff"), " ");
503
487
  } }
504
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_8_Template(rf, ctx) { if (rf & 1) {
488
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_8_Template(rf, ctx) { if (rf & 1) {
505
489
  i0.ɵɵelementStart(0, "span");
506
490
  i0.ɵɵtext(1);
507
491
  i0.ɵɵpipe(2, "date");
508
492
  i0.ɵɵelementEnd();
509
493
  } if (rf & 2) {
510
- const column_r118 = i0.ɵɵnextContext().$implicit;
494
+ const column_r112 = i0.ɵɵnextContext().$implicit;
511
495
  const row_r93 = i0.ɵɵnextContext().$implicit;
512
- const ctx_r126 = i0.ɵɵnextContext(3);
496
+ const ctx_r120 = i0.ɵɵnextContext(3);
513
497
  i0.ɵɵadvance();
514
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r126.getCellData(row_r93, column_r118), column_r118.format || "dd/MM/yyyy HH:mm:ss"), " ");
498
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r120.getCellData(row_r93, column_r112), column_r112.format || "dd/MM/yyyy HH:mm:ss"), " ");
515
499
  } }
516
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_9_Template(rf, ctx) { if (rf & 1) {
500
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_9_Template(rf, ctx) { if (rf & 1) {
517
501
  i0.ɵɵelementStart(0, "span");
518
502
  i0.ɵɵtext(1);
519
503
  i0.ɵɵelementEnd();
520
504
  } if (rf & 2) {
521
- const column_r118 = i0.ɵɵnextContext().$implicit;
505
+ const column_r112 = i0.ɵɵnextContext().$implicit;
522
506
  const row_r93 = i0.ɵɵnextContext().$implicit;
523
- const ctx_r127 = i0.ɵɵnextContext(3);
507
+ const ctx_r121 = i0.ɵɵnextContext(3);
524
508
  i0.ɵɵadvance();
525
- i0.ɵɵtextInterpolate1(" ", ctx_r127.formatNumber(ctx_r127.getCellData(row_r93, column_r118), column_r118.format), " ");
509
+ i0.ɵɵtextInterpolate1(" ", ctx_r121.formatNumber(ctx_r121.getCellData(row_r93, column_r112), column_r112.format), " ");
526
510
  } }
527
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
528
- const _r153 = i0.ɵɵgetCurrentView();
511
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
512
+ const _r147 = i0.ɵɵgetCurrentView();
529
513
  i0.ɵɵelementStart(0, "po-table-column-link", 107);
530
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r153); const column_r118 = i0.ɵɵnextContext().$implicit; const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r151 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r151.onClickLink($event, row_r93, column_r118)); });
514
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r147); const column_r112 = i0.ɵɵnextContext().$implicit; const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r145 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r145.onClickLink($event, row_r93, column_r112)); });
531
515
  i0.ɵɵelementEnd();
532
516
  } if (rf & 2) {
533
- const column_r118 = i0.ɵɵnextContext().$implicit;
517
+ const column_r112 = i0.ɵɵnextContext().$implicit;
534
518
  const row_r93 = i0.ɵɵnextContext().$implicit;
535
- const ctx_r128 = i0.ɵɵnextContext(3);
536
- i0.ɵɵproperty("p-action", column_r118.action)("p-disabled", ctx_r128.checkDisabled(row_r93, column_r118))("p-link", row_r93[column_r118.link])("p-row", row_r93)("p-value", ctx_r128.getCellData(row_r93, column_r118));
519
+ const ctx_r122 = i0.ɵɵnextContext(3);
520
+ i0.ɵɵproperty("p-action", column_r112.action)("p-disabled", ctx_r122.checkDisabled(row_r93, column_r112))("p-link", row_r93[column_r112.link])("p-row", row_r93)("p-value", ctx_r122.getCellData(row_r93, column_r112));
537
521
  } }
538
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
522
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
539
523
  i0.ɵɵelement(0, "po-table-column-icon", 108);
540
524
  } if (rf & 2) {
541
- const column_r118 = i0.ɵɵnextContext().$implicit;
525
+ const column_r112 = i0.ɵɵnextContext().$implicit;
542
526
  const row_r93 = i0.ɵɵnextContext().$implicit;
543
- const ctx_r129 = i0.ɵɵnextContext(3);
544
- i0.ɵɵproperty("p-column", column_r118)("p-icons", ctx_r129.getColumnIcons(row_r93, column_r118))("p-row", row_r93);
527
+ const ctx_r123 = i0.ɵɵnextContext(3);
528
+ i0.ɵɵproperty("p-column", column_r112)("p-icons", ctx_r123.getColumnIcons(row_r93, column_r112))("p-row", row_r93);
545
529
  } }
546
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_12_Template(rf, ctx) { if (rf & 1) {
530
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_12_Template(rf, ctx) { if (rf & 1) {
547
531
  i0.ɵɵelementStart(0, "span");
548
532
  i0.ɵɵelement(1, "po-table-subtitle-circle", 109);
549
533
  i0.ɵɵelementEnd();
550
534
  } if (rf & 2) {
551
- const column_r118 = i0.ɵɵnextContext().$implicit;
535
+ const column_r112 = i0.ɵɵnextContext().$implicit;
552
536
  const row_r93 = i0.ɵɵnextContext().$implicit;
553
- const ctx_r130 = i0.ɵɵnextContext(3);
537
+ const ctx_r124 = i0.ɵɵnextContext(3);
554
538
  i0.ɵɵadvance();
555
- i0.ɵɵproperty("p-subtitle", ctx_r130.getSubtitleColumn(row_r93, column_r118));
539
+ i0.ɵɵproperty("p-subtitle", ctx_r124.getSubtitleColumn(row_r93, column_r112));
556
540
  } }
557
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_13_Template(rf, ctx) { if (rf & 1) {
541
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_13_Template(rf, ctx) { if (rf & 1) {
558
542
  i0.ɵɵelementStart(0, "span");
559
543
  i0.ɵɵelement(1, "po-table-column-label", 110);
560
544
  i0.ɵɵelementEnd();
561
545
  } if (rf & 2) {
562
- const column_r118 = i0.ɵɵnextContext().$implicit;
546
+ const column_r112 = i0.ɵɵnextContext().$implicit;
563
547
  const row_r93 = i0.ɵɵnextContext().$implicit;
564
- const ctx_r131 = i0.ɵɵnextContext(3);
548
+ const ctx_r125 = i0.ɵɵnextContext(3);
565
549
  i0.ɵɵadvance();
566
- i0.ɵɵproperty("p-value", ctx_r131.getColumnLabel(row_r93, column_r118));
550
+ i0.ɵɵproperty("p-value", ctx_r125.getColumnLabel(row_r93, column_r112));
567
551
  } }
568
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_14_Template(rf, ctx) { if (rf & 1) {
552
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_14_Template(rf, ctx) { if (rf & 1) {
569
553
  i0.ɵɵelementStart(0, "span");
570
554
  i0.ɵɵtext(1);
571
555
  i0.ɵɵelementEnd();
572
556
  } if (rf & 2) {
573
- const column_r118 = i0.ɵɵnextContext().$implicit;
557
+ const column_r112 = i0.ɵɵnextContext().$implicit;
574
558
  const row_r93 = i0.ɵɵnextContext().$implicit;
575
- const ctx_r132 = i0.ɵɵnextContext(3);
559
+ const ctx_r126 = i0.ɵɵnextContext(3);
576
560
  i0.ɵɵadvance();
577
- i0.ɵɵtextInterpolate(ctx_r132.getCellData(row_r93, column_r118));
561
+ i0.ɵɵtextInterpolate(ctx_r126.getCellData(row_r93, column_r112));
578
562
  } }
579
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
580
- const _r166 = i0.ɵɵgetCurrentView();
563
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
564
+ const _r160 = i0.ɵɵgetCurrentView();
581
565
  i0.ɵɵelementStart(0, "td", 101);
582
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r166); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r165 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r165.hasSelectableRow() ? ctx_r165.selectRow(row_r93) : "javascript:;"); });
566
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r160); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r159 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r159.hasSelectableRow() ? ctx_r159.selectRow(row_r93) : "javascript:;"); });
583
567
  i0.ɵɵelementStart(1, "div", 102);
584
- i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r166); const column_r118 = restoredCtx.$implicit; const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r168 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r168.tooltipMouseEnter($event, column_r118, row_r93)); })("mouseleave", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r166); const ctx_r170 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r170.tooltipMouseLeave()); });
585
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_2_Template, 2, 4, "span", 103)(3, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_3_Template, 2, 5, "span", 103)(4, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_4_Template, 2, 1, "span", 103)(5, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_5_Template, 3, 6, "span", 103)(6, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_6_Template, 3, 4, "span", 103)(7, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_7_Template, 3, 4, "span", 103)(8, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_8_Template, 3, 4, "span", 103)(9, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_9_Template, 2, 1, "span", 103)(10, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_po_table_column_link_10_Template, 1, 5, "po-table-column-link", 104)(11, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_po_table_column_icon_11_Template, 1, 3, "po-table-column-icon", 105)(12, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_12_Template, 2, 1, "span", 103)(13, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_13_Template, 2, 1, "span", 103)(14, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_span_14_Template, 2, 1, "span", 106);
568
+ i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r160); const column_r112 = restoredCtx.$implicit; const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r162 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r162.tooltipMouseEnter($event, column_r112, row_r93)); })("mouseleave", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r160); const ctx_r164 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r164.tooltipMouseLeave()); });
569
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_2_Template, 2, 4, "span", 103)(3, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_3_Template, 2, 5, "span", 103)(4, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_4_Template, 2, 1, "span", 103)(5, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_5_Template, 3, 6, "span", 103)(6, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_6_Template, 3, 4, "span", 103)(7, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_7_Template, 3, 4, "span", 103)(8, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_8_Template, 3, 4, "span", 103)(9, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_9_Template, 2, 1, "span", 103)(10, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_link_10_Template, 1, 5, "po-table-column-link", 104)(11, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_po_table_column_icon_11_Template, 1, 3, "po-table-column-icon", 105)(12, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_12_Template, 2, 1, "span", 103)(13, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_13_Template, 2, 1, "span", 103)(14, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_span_14_Template, 2, 1, "span", 106);
586
570
  i0.ɵɵelementEnd()();
587
571
  } if (rf & 2) {
588
- const column_r118 = ctx.$implicit;
572
+ const column_r112 = ctx.$implicit;
589
573
  const row_r93 = i0.ɵɵnextContext().$implicit;
590
- const ctx_r99 = i0.ɵɵnextContext(3);
591
- i0.ɵɵstyleProp("width", column_r118.width)("max-width", column_r118.width)("min-width", column_r118.width);
592
- i0.ɵɵclassProp("po-table-column", column_r118.type !== "icon")("po-table-column-right", column_r118.type === "currency" || column_r118.type === "number")("po-table-column-center", column_r118.type === "subtitle")("po-table-column-icons", column_r118.type === "icon");
593
- i0.ɵɵproperty("pFrozenColumn", column_r118.fixed)("ngClass", ctx_r99.getClassColor(row_r93, column_r118));
574
+ const ctx_r98 = i0.ɵɵnextContext(3);
575
+ i0.ɵɵstyleProp("width", column_r112.width)("max-width", column_r112.width)("min-width", column_r112.width);
576
+ i0.ɵɵclassProp("po-table-column", column_r112.type !== "icon")("po-table-column-right", column_r112.type === "currency" || column_r112.type === "number")("po-table-column-center", column_r112.type === "subtitle")("po-table-column-icons", column_r112.type === "icon");
577
+ i0.ɵɵproperty("pFrozenColumn", column_r112.fixed)("ngClass", ctx_r98.getClassColor(row_r93, column_r112));
594
578
  i0.ɵɵadvance();
595
- i0.ɵɵproperty("ngSwitch", column_r118.type)("p-tooltip", ctx_r99.tooltipText)("p-append-in-body", true);
579
+ i0.ɵɵproperty("ngSwitch", column_r112.type)("p-tooltip", ctx_r98.tooltipText)("p-append-in-body", true);
596
580
  i0.ɵɵadvance();
597
581
  i0.ɵɵproperty("ngSwitchCase", "columnTemplate");
598
582
  i0.ɵɵadvance();
@@ -618,67 +602,67 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template(rf
618
602
  i0.ɵɵadvance();
619
603
  i0.ɵɵproperty("ngSwitchCase", "label");
620
604
  } }
621
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_7_ng_template_1_Template(rf, ctx) { }
622
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_7_Template(rf, ctx) { if (rf & 1) {
623
- const _r175 = i0.ɵɵgetCurrentView();
605
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_ng_template_1_Template(rf, ctx) { }
606
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
607
+ const _r169 = i0.ɵɵgetCurrentView();
624
608
  i0.ɵɵelementStart(0, "td", 99);
625
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r175); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r173 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r173.toggleDetail(row_r93)); });
626
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_7_ng_template_1_Template, 0, 0, "ng-template", 100);
609
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r169); const row_r93 = i0.ɵɵnextContext().$implicit; const ctx_r167 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r167.toggleDetail(row_r93)); });
610
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_ng_template_1_Template, 0, 0, "ng-template", 100);
627
611
  i0.ɵɵelementEnd();
628
612
  } if (rf & 2) {
629
- const ctx_r176 = i0.ɵɵnextContext();
630
- const row_r93 = ctx_r176.$implicit;
631
- const rowIndex_r94 = ctx_r176.index;
613
+ const ctx_r170 = i0.ɵɵnextContext();
614
+ const row_r93 = ctx_r170.$implicit;
615
+ const rowIndex_r94 = ctx_r170.index;
632
616
  i0.ɵɵnextContext(3);
633
617
  const _r13 = i0.ɵɵreference(15);
634
618
  i0.ɵɵadvance();
635
619
  i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r93, rowIndex_r94));
636
620
  } }
637
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_8_ng_template_0_Template(rf, ctx) { }
638
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_8_Template(rf, ctx) { if (rf & 1) {
639
- i0.ɵɵtemplate(0, PoTableComponent_ng_template_8_ng_container_16_tbody_1_8_ng_template_0_Template, 0, 0, "ng-template", 100);
621
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_7_ng_template_0_Template(rf, ctx) { }
622
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_7_Template(rf, ctx) { if (rf & 1) {
623
+ i0.ɵɵtemplate(0, PoTableComponent_ng_template_8_ng_container_16_tbody_1_7_ng_template_0_Template, 0, 0, "ng-template", 100);
640
624
  } if (rf & 2) {
641
- const ctx_r178 = i0.ɵɵnextContext();
642
- const row_r93 = ctx_r178.$implicit;
643
- const rowIndex_r94 = ctx_r178.index;
625
+ const ctx_r172 = i0.ɵɵnextContext();
626
+ const row_r93 = ctx_r172.$implicit;
627
+ const rowIndex_r94 = ctx_r172.index;
644
628
  i0.ɵɵnextContext(3);
645
629
  const _r25 = i0.ɵɵreference(27);
646
630
  i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r93, rowIndex_r94));
647
631
  } }
648
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_ng_template_2_Template(rf, ctx) { }
632
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_8_ng_template_2_Template(rf, ctx) { }
649
633
  const _c21 = (a0, a1) => ({ $implicit: a0, rowIndex: a1 });
650
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_Template(rf, ctx) { if (rf & 1) {
634
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_8_Template(rf, ctx) { if (rf & 1) {
651
635
  i0.ɵɵelementStart(0, "tr")(1, "td", 111);
652
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_ng_template_2_Template, 0, 0, "ng-template", 100);
636
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_8_ng_template_2_Template, 0, 0, "ng-template", 100);
653
637
  i0.ɵɵelementEnd()();
654
638
  } if (rf & 2) {
655
- const ctx_r180 = i0.ɵɵnextContext();
656
- const row_r93 = ctx_r180.$implicit;
657
- const rowIndex_r94 = ctx_r180.index;
658
- const ctx_r102 = i0.ɵɵnextContext(3);
639
+ const ctx_r174 = i0.ɵɵnextContext();
640
+ const row_r93 = ctx_r174.$implicit;
641
+ const rowIndex_r94 = ctx_r174.index;
642
+ const ctx_r101 = i0.ɵɵnextContext(3);
659
643
  i0.ɵɵadvance();
660
- i0.ɵɵproperty("colSpan", ctx_r102.columnCountForMasterDetail);
644
+ i0.ɵɵproperty("colSpan", ctx_r101.columnCountForMasterDetail);
661
645
  i0.ɵɵadvance();
662
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r102.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c21, row_r93, rowIndex_r94));
646
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r101.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c21, row_r93, rowIndex_r94));
663
647
  } }
664
- function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_10_Template(rf, ctx) { if (rf & 1) {
665
- const _r182 = i0.ɵɵgetCurrentView();
648
+ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_Template(rf, ctx) { if (rf & 1) {
649
+ const _r176 = i0.ɵɵgetCurrentView();
666
650
  i0.ɵɵelementStart(0, "tr")(1, "td", 112)(2, "po-table-detail", 113);
667
- i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_10_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r182); const ctx_r181 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r181.selectDetailRow($event)); });
651
+ i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r176); const ctx_r175 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r175.selectDetailRow($event)); });
668
652
  i0.ɵɵelementEnd()()();
669
653
  } if (rf & 2) {
670
654
  const row_r93 = i0.ɵɵnextContext().$implicit;
671
- const ctx_r103 = i0.ɵɵnextContext(3);
655
+ const ctx_r102 = i0.ɵɵnextContext(3);
672
656
  i0.ɵɵadvance();
673
- i0.ɵɵproperty("colSpan", ctx_r103.columnCountForMasterDetail);
657
+ i0.ɵɵproperty("colSpan", ctx_r102.columnCountForMasterDetail);
674
658
  i0.ɵɵadvance();
675
- i0.ɵɵproperty("p-selectable", ctx_r103.selectable && !ctx_r103.detailHideSelect)("p-detail", ctx_r103.columnMasterDetail.detail)("p-items", row_r93[ctx_r103.nameColumnDetail])("p-parent-row", row_r93);
659
+ i0.ɵɵproperty("p-selectable", ctx_r102.selectable && !ctx_r102.detailHideSelect)("p-detail", ctx_r102.columnMasterDetail.detail)("p-items", row_r93[ctx_r102.nameColumnDetail])("p-parent-row", row_r93);
676
660
  } }
677
661
  function PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template(rf, ctx) { if (rf & 1) {
678
662
  i0.ɵɵelementStart(0, "tbody", 91)(1, "tr", 95);
679
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_2_Template, 2, 4, "td", 96)(3, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template, 2, 5, "td", 97)(4, PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_Template, 1, 5, null, 43)(5, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template, 2, 5, "td", 97)(6, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template, 15, 31, "td", 98)(7, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_7_Template, 2, 5, "td", 97)(8, PoTableComponent_ng_template_8_ng_container_16_tbody_1_8_Template, 1, 5, null, 43);
663
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_2_Template, 2, 4, "td", 96)(3, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_3_Template, 2, 5, "td", 97)(4, PoTableComponent_ng_template_8_ng_container_16_tbody_1_4_Template, 1, 5, null, 43)(5, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_5_Template, 15, 31, "td", 98)(6, PoTableComponent_ng_template_8_ng_container_16_tbody_1_td_6_Template, 2, 5, "td", 97)(7, PoTableComponent_ng_template_8_ng_container_16_tbody_1_7_Template, 1, 5, null, 43);
680
664
  i0.ɵɵelementEnd();
681
- i0.ɵɵtemplate(9, PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_Template, 3, 6, "tr", 43)(10, PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_10_Template, 3, 5, "tr", 43);
665
+ i0.ɵɵtemplate(8, PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_8_Template, 3, 6, "tr", 43)(9, PoTableComponent_ng_template_8_ng_container_16_tbody_1_tr_9_Template, 3, 5, "tr", 43);
682
666
  i0.ɵɵelementEnd();
683
667
  } if (rf & 2) {
684
668
  const row_r93 = ctx.$implicit;
@@ -689,12 +673,10 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template(rf, ctx
689
673
  i0.ɵɵadvance();
690
674
  i0.ɵɵproperty("ngIf", ctx_r92.selectable);
691
675
  i0.ɵɵadvance();
692
- i0.ɵɵproperty("ngIf", ctx_r92.columnMasterDetail && !ctx_r92.hideDetail && !ctx_r92.hasRowTemplate);
676
+ i0.ɵɵproperty("ngIf", ctx_r92.columnMasterDetail && !ctx_r92.hideDetail && !ctx_r92.hasRowTemplate || ctx_r92.hasRowTemplate && !ctx_r92.hasRowTemplateWithArrowDirectionRight);
693
677
  i0.ɵɵadvance();
694
678
  i0.ɵɵproperty("ngIf", !ctx_r92.actionRight && (ctx_r92.visibleActions.length > 1 || ctx_r92.isSingleAction));
695
679
  i0.ɵɵadvance();
696
- i0.ɵɵproperty("ngIf", ctx_r92.hasRowTemplate && !ctx_r92.hasRowTemplateWithArrowDirectionRight);
697
- i0.ɵɵadvance();
698
680
  i0.ɵɵproperty("ngForOf", ctx_r92.mainColumns)("ngForTrackBy", ctx_r92.trackBy);
699
681
  i0.ɵɵadvance();
700
682
  i0.ɵɵproperty("ngIf", ctx_r92.hasRowTemplateWithArrowDirectionRight);
@@ -707,7 +689,7 @@ function PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template(rf, ctx
707
689
  } }
708
690
  function PoTableComponent_ng_template_8_ng_container_16_Template(rf, ctx) { if (rf & 1) {
709
691
  i0.ɵɵelementContainerStart(0);
710
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template, 11, 12, "tbody", 94);
692
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_16_tbody_1_Template, 10, 11, "tbody", 94);
711
693
  i0.ɵɵelementContainerEnd();
712
694
  } if (rf & 2) {
713
695
  const ctx_r70 = i0.ɵɵnextContext(2);
@@ -717,9 +699,9 @@ function PoTableComponent_ng_template_8_ng_container_16_Template(rf, ctx) { if (
717
699
  const _c22 = (a0, a1, a2, a3, a4) => ({ "po-table-interactive": a0, "po-table-selectable": a1, "po-table-striped": a2, "po-table-data-fixed-columns": a3, "po-table-text-wrap-enabled": a4 });
718
700
  const _c23 = (a0, a1) => ({ "no-hover": a0, "po-table-column-drag": a1 });
719
701
  function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
720
- const _r185 = i0.ɵɵgetCurrentView();
702
+ const _r179 = i0.ɵɵgetCurrentView();
721
703
  i0.ɵɵelementStart(0, "table", 56, 57)(2, "thead")(3, "tr", 58);
722
- i0.ɵɵlistener("cdkDropListDropped", function PoTableComponent_ng_template_8_Template_tr_cdkDropListDropped_3_listener($event) { i0.ɵɵrestoreView(_r185); const ctx_r184 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r184.drop($event)); });
704
+ i0.ɵɵlistener("cdkDropListDropped", function PoTableComponent_ng_template_8_Template_tr_cdkDropListDropped_3_listener($event) { i0.ɵɵrestoreView(_r179); const ctx_r178 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r178.drop($event)); });
723
705
  i0.ɵɵtemplate(4, PoTableComponent_ng_template_8_th_4_Template, 3, 5, "th", 59)(5, PoTableComponent_ng_template_8_th_5_Template, 1, 0, "th", 60)(6, PoTableComponent_ng_template_8_th_6_Template, 2, 4, "th", 61)(7, PoTableComponent_ng_template_8_th_7_Template, 3, 3, "th", 62)(8, PoTableComponent_ng_template_8_ng_container_8_Template, 1, 0, "ng-container", 63)(9, PoTableComponent_ng_template_8_ng_template_9_Template, 1, 2, "ng-template", null, 64, i0.ɵɵtemplateRefExtractor)(11, PoTableComponent_ng_template_8_ng_template_11_Template, 1, 2, "ng-template", null, 65, i0.ɵɵtemplateRefExtractor)(13, PoTableComponent_ng_template_8_th_13_Template, 1, 0, "th", 60)(14, PoTableComponent_ng_template_8_th_14_Template, 1, 4, "th", 66);
724
706
  i0.ɵɵelementEnd()();
725
707
  i0.ɵɵtemplate(15, PoTableComponent_ng_template_8_tbody_15_Template, 5, 2, "tbody", 67)(16, PoTableComponent_ng_template_8_ng_container_16_Template, 2, 2, "ng-container", 43);
@@ -738,7 +720,7 @@ function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
738
720
  i0.ɵɵadvance();
739
721
  i0.ɵɵproperty("ngIf", ctx_r7.hasSelectableColumn);
740
722
  i0.ɵɵadvance();
741
- i0.ɵɵproperty("ngIf", (ctx_r7.hasMasterDetailColumn || ctx_r7.hasRowTemplate) && !ctx_r7.hasRowTemplateWithArrowDirectionRight);
723
+ i0.ɵɵproperty("ngIf", (ctx_r7.hasMasterDetailColumn || ctx_r7.hasRowTemplate) && ctx_r7.hasMainColumns && !ctx_r7.hasRowTemplateWithArrowDirectionRight);
742
724
  i0.ɵɵadvance();
743
725
  i0.ɵɵproperty("ngIf", !ctx_r7.actionRight && (ctx_r7.visibleActions.length > 1 || ctx_r7.isSingleAction));
744
726
  i0.ɵɵadvance();
@@ -746,7 +728,7 @@ function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
746
728
  i0.ɵɵadvance();
747
729
  i0.ɵɵproperty("ngIf", ctx_r7.isDraggable || ctx_r7.hasSomeFixed())("ngIfThen", _r64)("ngIfElse", _r66);
748
730
  i0.ɵɵadvance(5);
749
- i0.ɵɵproperty("ngIf", ctx_r7.hasRowTemplateWithArrowDirectionRight && (ctx_r7.hasVisibleActions || ctx_r7.hideColumnsManager));
731
+ i0.ɵɵproperty("ngIf", ctx_r7.hasRowTemplateWithArrowDirectionRight && (ctx_r7.hasVisibleActions || ctx_r7.hideColumnsManager) && ctx_r7.hasMainColumns);
750
732
  i0.ɵɵadvance();
751
733
  i0.ɵɵproperty("ngIf", ctx_r7.hasVisibleActions && ctx_r7.actionRight && (ctx_r7.visibleActions.length > 1 || ctx_r7.isSingleAction));
752
734
  i0.ɵɵadvance();
@@ -755,25 +737,25 @@ function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
755
737
  i0.ɵɵproperty("ngIf", ctx_r7.hasMainColumns);
756
738
  } }
757
739
  function PoTableComponent_ng_template_10_th_5_po_checkbox_2_Template(rf, ctx) { if (rf & 1) {
758
- const _r202 = i0.ɵɵgetCurrentView();
740
+ const _r196 = i0.ɵɵgetCurrentView();
759
741
  i0.ɵɵelementStart(0, "po-checkbox", 70);
760
- i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_10_th_5_po_checkbox_2_Template_po_checkbox_p_change_0_listener() { i0.ɵɵrestoreView(_r202); const ctx_r201 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r201.selectAllRows()); });
742
+ i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_10_th_5_po_checkbox_2_Template_po_checkbox_p_change_0_listener() { i0.ɵɵrestoreView(_r196); const ctx_r195 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r195.selectAllRows()); });
761
743
  i0.ɵɵelementEnd();
762
744
  } if (rf & 2) {
763
- const ctx_r200 = i0.ɵɵnextContext(3);
764
- i0.ɵɵproperty("p-checkboxValue", ctx_r200.selectAll === null ? "mixed" : ctx_r200.selectAll);
745
+ const ctx_r194 = i0.ɵɵnextContext(3);
746
+ i0.ɵɵproperty("p-checkboxValue", ctx_r194.selectAll === null ? "mixed" : ctx_r194.selectAll);
765
747
  } }
766
748
  function PoTableComponent_ng_template_10_th_5_Template(rf, ctx) { if (rf & 1) {
767
749
  i0.ɵɵelementStart(0, "th", 68)(1, "div");
768
750
  i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_th_5_po_checkbox_2_Template, 1, 1, "po-checkbox", 69);
769
751
  i0.ɵɵelementEnd()();
770
752
  } if (rf & 2) {
771
- const ctx_r187 = i0.ɵɵnextContext(2);
772
- i0.ɵɵstyleProp("pointer-events", ctx_r187.hideSelectAll ? "none" : "auto");
753
+ const ctx_r181 = i0.ɵɵnextContext(2);
754
+ i0.ɵɵstyleProp("pointer-events", ctx_r181.hideSelectAll ? "none" : "auto");
773
755
  i0.ɵɵadvance();
774
- i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r187.height);
756
+ i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r181.height);
775
757
  i0.ɵɵadvance();
776
- i0.ɵɵproperty("ngIf", !ctx_r187.hideSelectAll);
758
+ i0.ɵɵproperty("ngIf", !ctx_r181.hideSelectAll);
777
759
  } }
778
760
  function PoTableComponent_ng_template_10_th_6_Template(rf, ctx) { if (rf & 1) {
779
761
  i0.ɵɵelement(0, "th", 71);
@@ -781,8 +763,8 @@ function PoTableComponent_ng_template_10_th_6_Template(rf, ctx) { if (rf & 1) {
781
763
  function PoTableComponent_ng_template_10_th_7_Template(rf, ctx) { if (rf & 1) {
782
764
  i0.ɵɵelement(0, "th", null, 72);
783
765
  } if (rf & 2) {
784
- const ctx_r189 = i0.ɵɵnextContext(2);
785
- i0.ɵɵclassProp("po-table-header-master-detail", !ctx_r189.isSingleAction)("po-table-header-single-action", ctx_r189.isSingleAction);
766
+ const ctx_r183 = i0.ɵɵnextContext(2);
767
+ i0.ɵɵclassProp("po-table-header-master-detail", !ctx_r183.isSingleAction)("po-table-header-single-action", ctx_r183.isSingleAction);
786
768
  } }
787
769
  function PoTableComponent_ng_template_10_th_8_ng_container_2_Template(rf, ctx) { if (rf & 1) {
788
770
  i0.ɵɵelementContainer(0);
@@ -792,11 +774,11 @@ function PoTableComponent_ng_template_10_th_8_Template(rf, ctx) { if (rf & 1) {
792
774
  i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_th_8_ng_container_2_Template, 1, 0, "ng-container", 63);
793
775
  i0.ɵɵelementEnd();
794
776
  } if (rf & 2) {
795
- const ctx_r190 = i0.ɵɵnextContext(2);
777
+ const ctx_r184 = i0.ɵɵnextContext(2);
796
778
  const _r21 = i0.ɵɵreference(23);
797
779
  const _r23 = i0.ɵɵreference(25);
798
780
  i0.ɵɵadvance(2);
799
- i0.ɵɵproperty("ngIf", ctx_r190.height)("ngIfThen", _r21)("ngIfElse", _r23);
781
+ i0.ɵɵproperty("ngIf", ctx_r184.height)("ngIfThen", _r21)("ngIfElse", _r23);
800
782
  } }
801
783
  function PoTableComponent_ng_template_10_ng_container_9_Template(rf, ctx) { if (rf & 1) {
802
784
  i0.ɵɵelementContainer(0);
@@ -815,75 +797,75 @@ function PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_4_Temp
815
797
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_4_po_icon_1_Template, 1, 0, "po-icon", 79)(2, PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_4__svg_svg_2_Template, 7, 0, "svg", 80);
816
798
  i0.ɵɵelementContainerEnd();
817
799
  } if (rf & 2) {
818
- const ctx_r209 = i0.ɵɵnextContext(4);
800
+ const ctx_r203 = i0.ɵɵnextContext(4);
819
801
  i0.ɵɵadvance();
820
- i0.ɵɵproperty("ngIf", ctx_r209.iconNameLib === "PhosphorIcon");
802
+ i0.ɵɵproperty("ngIf", ctx_r203.iconNameLib === "PhosphorIcon");
821
803
  i0.ɵɵadvance();
822
- i0.ɵɵproperty("ngIf", ctx_r209.iconNameLib === "PoIcon");
804
+ i0.ɵɵproperty("ngIf", ctx_r203.iconNameLib === "PoIcon");
823
805
  } }
824
806
  function PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_5_Template(rf, ctx) { if (rf & 1) {
825
807
  i0.ɵɵelementContainer(0);
826
808
  } }
827
809
  function PoTableComponent_ng_template_10_ng_template_10_th_0_Template(rf, ctx) { if (rf & 1) {
828
- const _r214 = i0.ɵɵgetCurrentView();
810
+ const _r208 = i0.ɵɵgetCurrentView();
829
811
  i0.ɵɵelementStart(0, "th", 76);
830
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_template_10_th_0_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r214); const column_r207 = restoredCtx.$implicit; const ctx_r213 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r213.sortColumn(column_r207)); });
812
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_template_10_th_0_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r208); const column_r201 = restoredCtx.$implicit; const ctx_r207 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r207.sortColumn(column_r201)); });
831
813
  i0.ɵɵpipe(1, "lowercase");
832
814
  i0.ɵɵpipe(2, "titlecase");
833
815
  i0.ɵɵelementStart(3, "div", 77);
834
816
  i0.ɵɵtemplate(4, PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_4_Template, 3, 2, "ng-container", 43)(5, PoTableComponent_ng_template_10_ng_template_10_th_0_ng_container_5_Template, 1, 0, "ng-container", 78);
835
817
  i0.ɵɵelementEnd()();
836
818
  } if (rf & 2) {
837
- const column_r207 = ctx.$implicit;
838
- const ctx_r206 = i0.ɵɵnextContext(3);
819
+ const column_r201 = ctx.$implicit;
820
+ const ctx_r200 = i0.ɵɵnextContext(3);
839
821
  const _r19 = i0.ɵɵreference(21);
840
- i0.ɵɵstyleProp("width", column_r207.width)("max-width", column_r207.width)("min-width", column_r207.width);
841
- i0.ɵɵclassProp("po-clickable", ctx_r206.sort && column_r207.sortable !== false || ctx_r206.hasService)("po-table-header-subtitle", column_r207.type === "subtitle")("po-table-column-drag-box", ctx_r206.isDraggable);
842
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(30, _c16, ctx_r206.sort && ctx_r206.JSON.stringify(ctx_r206.sortedColumn == null ? null : ctx_r206.sortedColumn.property) === ctx_r206.JSON.stringify(column_r207) && (ctx_r206.sortedColumn.ascending || !ctx_r206.sortedColumn.ascending)))("ngStyle", i0.ɵɵpureFunction1(32, _c17, !ctx_r206.hasItems ? "100%" : ctx_r206.applyFixedColumns() ? column_r207.width : "auto"))("cdkDragDisabled", column_r207.fixed ? "true" : "false")("pFrozenColumn", column_r207.fixed);
843
- i0.ɵɵattribute("data-po-table-column-name", i0.ɵɵpipeBind1(1, 26, column_r207.label || i0.ɵɵpipeBind1(2, 28, column_r207.property)));
822
+ i0.ɵɵstyleProp("width", column_r201.width)("max-width", column_r201.width)("min-width", column_r201.width);
823
+ i0.ɵɵclassProp("po-clickable", ctx_r200.sort && column_r201.sortable !== false || ctx_r200.hasService)("po-table-header-subtitle", column_r201.type === "subtitle")("po-table-column-drag-box", ctx_r200.isDraggable);
824
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(30, _c16, ctx_r200.sort && ctx_r200.JSON.stringify(ctx_r200.sortedColumn == null ? null : ctx_r200.sortedColumn.property) === ctx_r200.JSON.stringify(column_r201) && (ctx_r200.sortedColumn.ascending || !ctx_r200.sortedColumn.ascending)))("ngStyle", i0.ɵɵpureFunction1(32, _c17, !ctx_r200.hasItems ? "100%" : ctx_r200.applyFixedColumns() ? column_r201.width : "auto"))("cdkDragDisabled", column_r201.fixed ? "true" : "false")("pFrozenColumn", column_r201.fixed);
825
+ i0.ɵɵattribute("data-po-table-column-name", i0.ɵɵpipeBind1(1, 26, column_r201.label || i0.ɵɵpipeBind1(2, 28, column_r201.property)));
844
826
  i0.ɵɵadvance(3);
845
- i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r206.height)("po-table-header-flex-right", column_r207.type === "currency" || column_r207.type === "number")("po-table-header-flex-center", column_r207.type === "subtitle");
827
+ i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r200.height)("po-table-header-flex-right", column_r201.type === "currency" || column_r201.type === "number")("po-table-header-flex-center", column_r201.type === "subtitle");
846
828
  i0.ɵɵadvance();
847
- i0.ɵɵproperty("ngIf", ctx_r206.isDraggable && !column_r207.fixed);
829
+ i0.ɵɵproperty("ngIf", ctx_r200.isDraggable && !column_r201.fixed);
848
830
  i0.ɵɵadvance();
849
- i0.ɵɵproperty("ngTemplateOutlet", _r19)("ngTemplateOutletContext", i0.ɵɵpureFunction1(34, _c18, column_r207));
831
+ i0.ɵɵproperty("ngTemplateOutlet", _r19)("ngTemplateOutletContext", i0.ɵɵpureFunction1(34, _c18, column_r201));
850
832
  } }
851
833
  function PoTableComponent_ng_template_10_ng_template_10_Template(rf, ctx) { if (rf & 1) {
852
834
  i0.ɵɵtemplate(0, PoTableComponent_ng_template_10_ng_template_10_th_0_Template, 6, 36, "th", 75);
853
835
  } if (rf & 2) {
854
- const ctx_r192 = i0.ɵɵnextContext(2);
855
- i0.ɵɵproperty("ngForOf", ctx_r192.mainColumns)("ngForTrackBy", ctx_r192.trackBy);
836
+ const ctx_r186 = i0.ɵɵnextContext(2);
837
+ i0.ɵɵproperty("ngForOf", ctx_r186.mainColumns)("ngForTrackBy", ctx_r186.trackBy);
856
838
  } }
857
839
  function PoTableComponent_ng_template_10_ng_template_12_th_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {
858
840
  i0.ɵɵelementContainer(0);
859
841
  } }
860
842
  function PoTableComponent_ng_template_10_ng_template_12_th_0_Template(rf, ctx) { if (rf & 1) {
861
- const _r220 = i0.ɵɵgetCurrentView();
843
+ const _r214 = i0.ɵɵgetCurrentView();
862
844
  i0.ɵɵelementStart(0, "th", 121);
863
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_template_12_th_0_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r220); const column_r216 = restoredCtx.$implicit; const ctx_r219 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r219.sortColumn(column_r216)); });
845
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_template_12_th_0_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r214); const column_r210 = restoredCtx.$implicit; const ctx_r213 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r213.sortColumn(column_r210)); });
864
846
  i0.ɵɵpipe(1, "lowercase");
865
847
  i0.ɵɵpipe(2, "titlecase");
866
848
  i0.ɵɵelementStart(3, "div", 77);
867
849
  i0.ɵɵtemplate(4, PoTableComponent_ng_template_10_ng_template_12_th_0_ng_container_4_Template, 1, 0, "ng-container", 78);
868
850
  i0.ɵɵelementEnd()();
869
851
  } if (rf & 2) {
870
- const column_r216 = ctx.$implicit;
871
- const ctx_r215 = i0.ɵɵnextContext(3);
852
+ const column_r210 = ctx.$implicit;
853
+ const ctx_r209 = i0.ɵɵnextContext(3);
872
854
  const _r19 = i0.ɵɵreference(21);
873
- i0.ɵɵstyleProp("width", column_r216.width)("max-width", column_r216.width)("min-width", column_r216.width);
874
- i0.ɵɵclassProp("po-clickable", ctx_r215.sort && column_r216.sortable !== false || ctx_r215.hasService)("po-table-header-subtitle", column_r216.type === "subtitle");
875
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(26, _c16, ctx_r215.sort && ctx_r215.JSON.stringify(ctx_r215.sortedColumn == null ? null : ctx_r215.sortedColumn.property) === ctx_r215.JSON.stringify(column_r216) && (ctx_r215.sortedColumn.ascending || !ctx_r215.sortedColumn.ascending)))("ngStyle", i0.ɵɵpureFunction1(28, _c17, !ctx_r215.hasItems ? "100%" : ctx_r215.applyFixedColumns() ? column_r216.width : "auto"))("pFrozenColumn", column_r216.fixed);
876
- i0.ɵɵattribute("data-po-table-column-name", i0.ɵɵpipeBind1(1, 22, column_r216.label || i0.ɵɵpipeBind1(2, 24, column_r216.property)));
855
+ i0.ɵɵstyleProp("width", column_r210.width)("max-width", column_r210.width)("min-width", column_r210.width);
856
+ i0.ɵɵclassProp("po-clickable", ctx_r209.sort && column_r210.sortable !== false || ctx_r209.hasService)("po-table-header-subtitle", column_r210.type === "subtitle");
857
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(26, _c16, ctx_r209.sort && ctx_r209.JSON.stringify(ctx_r209.sortedColumn == null ? null : ctx_r209.sortedColumn.property) === ctx_r209.JSON.stringify(column_r210) && (ctx_r209.sortedColumn.ascending || !ctx_r209.sortedColumn.ascending)))("ngStyle", i0.ɵɵpureFunction1(28, _c17, !ctx_r209.hasItems ? "100%" : ctx_r209.applyFixedColumns() ? column_r210.width : "auto"))("pFrozenColumn", column_r210.fixed);
858
+ i0.ɵɵattribute("data-po-table-column-name", i0.ɵɵpipeBind1(1, 22, column_r210.label || i0.ɵɵpipeBind1(2, 24, column_r210.property)));
877
859
  i0.ɵɵadvance(3);
878
- i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r215.height)("po-table-header-flex-right", column_r216.type === "currency" || column_r216.type === "number")("po-table-header-flex-center", column_r216.type === "subtitle");
860
+ i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r209.height)("po-table-header-flex-right", column_r210.type === "currency" || column_r210.type === "number")("po-table-header-flex-center", column_r210.type === "subtitle");
879
861
  i0.ɵɵadvance();
880
- i0.ɵɵproperty("ngTemplateOutlet", _r19)("ngTemplateOutletContext", i0.ɵɵpureFunction1(30, _c18, column_r216));
862
+ i0.ɵɵproperty("ngTemplateOutlet", _r19)("ngTemplateOutletContext", i0.ɵɵpureFunction1(30, _c18, column_r210));
881
863
  } }
882
864
  function PoTableComponent_ng_template_10_ng_template_12_Template(rf, ctx) { if (rf & 1) {
883
865
  i0.ɵɵtemplate(0, PoTableComponent_ng_template_10_ng_template_12_th_0_Template, 5, 32, "th", 120);
884
866
  } if (rf & 2) {
885
- const ctx_r194 = i0.ɵɵnextContext(2);
886
- i0.ɵɵproperty("ngForOf", ctx_r194.mainColumns)("ngForTrackBy", ctx_r194.trackBy);
867
+ const ctx_r188 = i0.ɵɵnextContext(2);
868
+ i0.ɵɵproperty("ngForOf", ctx_r188.mainColumns)("ngForTrackBy", ctx_r188.trackBy);
887
869
  } }
888
870
  function PoTableComponent_ng_template_10_th_14_Template(rf, ctx) { if (rf & 1) {
889
871
  i0.ɵɵelement(0, "th", 71);
@@ -891,19 +873,19 @@ function PoTableComponent_ng_template_10_th_14_Template(rf, ctx) { if (rf & 1) {
891
873
  function PoTableComponent_ng_template_10_th_15_Template(rf, ctx) { if (rf & 1) {
892
874
  i0.ɵɵelement(0, "th");
893
875
  } if (rf & 2) {
894
- const ctx_r197 = i0.ɵɵnextContext(2);
895
- i0.ɵɵclassProp("po-table-header-single-action", ctx_r197.isSingleAction)("po-table-header-actions", !ctx_r197.isSingleAction);
876
+ const ctx_r191 = i0.ɵɵnextContext(2);
877
+ i0.ɵɵclassProp("po-table-header-single-action", ctx_r191.isSingleAction)("po-table-header-actions", !ctx_r191.isSingleAction);
896
878
  } }
897
879
  function PoTableComponent_ng_template_10_tbody_16_Template(rf, ctx) { if (rf & 1) {
898
880
  i0.ɵɵelementStart(0, "tbody", 91)(1, "tr", 92)(2, "td", 93)(3, "span");
899
881
  i0.ɵɵtext(4);
900
882
  i0.ɵɵelementEnd()()()();
901
883
  } if (rf & 2) {
902
- const ctx_r198 = i0.ɵɵnextContext(2);
884
+ const ctx_r192 = i0.ɵɵnextContext(2);
903
885
  i0.ɵɵadvance(2);
904
- i0.ɵɵproperty("colSpan", ctx_r198.columnCount);
886
+ i0.ɵɵproperty("colSpan", ctx_r192.columnCount);
905
887
  i0.ɵɵadvance(2);
906
- i0.ɵɵtextInterpolate1(" ", ctx_r198.literals.noData, " ");
888
+ i0.ɵɵtextInterpolate1(" ", ctx_r192.literals.noData, " ");
907
889
  } }
908
890
  function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
909
891
  i0.ɵɵelementContainer(0);
@@ -913,223 +895,207 @@ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_Template(r
913
895
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_ng_container_1_Template, 1, 0, "ng-container", 78);
914
896
  i0.ɵɵelementEnd();
915
897
  } if (rf & 2) {
916
- const row_r222 = i0.ɵɵnextContext().$implicit;
917
- const ctx_r224 = i0.ɵɵnextContext(3);
898
+ const row_r216 = i0.ɵɵnextContext().$implicit;
899
+ const ctx_r218 = i0.ɵɵnextContext(3);
918
900
  const _r15 = i0.ɵɵreference(17);
919
901
  const _r17 = i0.ɵɵreference(19);
920
902
  i0.ɵɵadvance();
921
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r224.singleSelect ? _r15 : _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c18, row_r222));
903
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r218.singleSelect ? _r15 : _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c18, row_r216));
922
904
  } }
923
905
  function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_ng_template_1_Template(rf, ctx) { }
924
906
  function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template(rf, ctx) { if (rf & 1) {
925
- const _r238 = i0.ɵɵgetCurrentView();
907
+ const _r231 = i0.ɵɵgetCurrentView();
926
908
  i0.ɵɵelementStart(0, "td", 99);
927
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r238); const row_r222 = i0.ɵɵnextContext().$implicit; const ctx_r236 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r236.toggleDetail(row_r222)); });
909
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r231); const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r229 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r229.toggleDetail(row_r216)); });
928
910
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_ng_template_1_Template, 0, 0, "ng-template", 100);
929
911
  i0.ɵɵelementEnd();
930
912
  } if (rf & 2) {
931
- const ctx_r239 = i0.ɵɵnextContext();
932
- const row_r222 = ctx_r239.$implicit;
933
- const rowIndex_r223 = ctx_r239.index;
913
+ const ctx_r232 = i0.ɵɵnextContext();
914
+ const row_r216 = ctx_r232.$implicit;
915
+ const rowIndex_r217 = ctx_r232.index;
934
916
  i0.ɵɵnextContext(3);
935
917
  const _r13 = i0.ɵɵreference(15);
936
918
  i0.ɵɵadvance();
937
- i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r222, rowIndex_r223));
919
+ i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r216, rowIndex_r217));
938
920
  } }
939
921
  function PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_ng_template_0_Template(rf, ctx) { }
940
922
  function PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_Template(rf, ctx) { if (rf & 1) {
941
923
  i0.ɵɵtemplate(0, PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_ng_template_0_Template, 0, 0, "ng-template", 100);
942
924
  } if (rf & 2) {
943
- const ctx_r241 = i0.ɵɵnextContext();
944
- const row_r222 = ctx_r241.$implicit;
945
- const rowIndex_r223 = ctx_r241.index;
925
+ const ctx_r234 = i0.ɵɵnextContext();
926
+ const row_r216 = ctx_r234.$implicit;
927
+ const rowIndex_r217 = ctx_r234.index;
946
928
  i0.ɵɵnextContext(3);
947
929
  const _r25 = i0.ɵɵreference(27);
948
- i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r222, rowIndex_r223));
949
- } }
950
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_ng_template_1_Template(rf, ctx) { }
951
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
952
- const _r245 = i0.ɵɵgetCurrentView();
953
- i0.ɵɵelementStart(0, "td", 99);
954
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r245); const row_r222 = i0.ɵɵnextContext().$implicit; const ctx_r243 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r243.toggleDetail(row_r222)); });
955
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_ng_template_1_Template, 0, 0, "ng-template", 100);
956
- i0.ɵɵelementEnd();
957
- } if (rf & 2) {
958
- const ctx_r246 = i0.ɵɵnextContext();
959
- const row_r222 = ctx_r246.$implicit;
960
- const rowIndex_r223 = ctx_r246.index;
961
- i0.ɵɵnextContext(3);
962
- const _r13 = i0.ɵɵreference(15);
963
- i0.ɵɵadvance();
964
- i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r222, rowIndex_r223));
930
+ i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r216, rowIndex_r217));
965
931
  } }
966
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
932
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
967
933
  i0.ɵɵelementContainer(0);
968
934
  } }
969
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_2_Template(rf, ctx) { if (rf & 1) {
935
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_2_Template(rf, ctx) { if (rf & 1) {
970
936
  i0.ɵɵelementStart(0, "span");
971
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_2_ng_container_1_Template, 1, 0, "ng-container", 78);
937
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_2_ng_container_1_Template, 1, 0, "ng-container", 78);
972
938
  i0.ɵɵelementEnd();
973
939
  } if (rf & 2) {
974
- const column_r247 = i0.ɵɵnextContext().$implicit;
975
- const row_r222 = i0.ɵɵnextContext().$implicit;
976
- const ctx_r249 = i0.ɵɵnextContext(3);
940
+ const column_r235 = i0.ɵɵnextContext().$implicit;
941
+ const row_r216 = i0.ɵɵnextContext().$implicit;
942
+ const ctx_r237 = i0.ɵɵnextContext(3);
977
943
  i0.ɵɵadvance();
978
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r249.getTemplate(column_r247))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c18, ctx_r249.getCellData(row_r222, column_r247)));
944
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r237.getTemplate(column_r235))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c18, ctx_r237.getCellData(row_r216, column_r235)));
979
945
  } }
980
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
946
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
981
947
  i0.ɵɵelementContainer(0);
982
948
  } }
983
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_3_Template(rf, ctx) { if (rf & 1) {
949
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_3_Template(rf, ctx) { if (rf & 1) {
984
950
  i0.ɵɵelementStart(0, "span");
985
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_3_ng_container_1_Template, 1, 0, "ng-container", 78);
951
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_3_ng_container_1_Template, 1, 0, "ng-container", 78);
986
952
  i0.ɵɵelementEnd();
987
953
  } if (rf & 2) {
988
- const column_r247 = i0.ɵɵnextContext().$implicit;
989
- const row_r222 = i0.ɵɵnextContext().$implicit;
990
- const ctx_r250 = i0.ɵɵnextContext(3);
954
+ const column_r235 = i0.ɵɵnextContext().$implicit;
955
+ const row_r216 = i0.ɵɵnextContext().$implicit;
956
+ const ctx_r238 = i0.ɵɵnextContext(3);
991
957
  i0.ɵɵadvance();
992
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r250.tableCellTemplate == null ? null : ctx_r250.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c20, row_r222, column_r247));
958
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r238.tableCellTemplate == null ? null : ctx_r238.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c20, row_r216, column_r235));
993
959
  } }
994
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_4_Template(rf, ctx) { if (rf & 1) {
960
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_4_Template(rf, ctx) { if (rf & 1) {
995
961
  i0.ɵɵelementStart(0, "span");
996
962
  i0.ɵɵtext(1);
997
963
  i0.ɵɵelementEnd();
998
964
  } if (rf & 2) {
999
- const column_r247 = i0.ɵɵnextContext().$implicit;
1000
- const row_r222 = i0.ɵɵnextContext().$implicit;
1001
- const ctx_r251 = i0.ɵɵnextContext(3);
965
+ const column_r235 = i0.ɵɵnextContext().$implicit;
966
+ const row_r216 = i0.ɵɵnextContext().$implicit;
967
+ const ctx_r239 = i0.ɵɵnextContext(3);
1002
968
  i0.ɵɵadvance();
1003
- i0.ɵɵtextInterpolate1(" ", ctx_r251.getBooleanLabel(ctx_r251.getCellData(row_r222, column_r247), column_r247), " ");
969
+ i0.ɵɵtextInterpolate1(" ", ctx_r239.getBooleanLabel(ctx_r239.getCellData(row_r216, column_r235), column_r235), " ");
1004
970
  } }
1005
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_5_Template(rf, ctx) { if (rf & 1) {
971
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_5_Template(rf, ctx) { if (rf & 1) {
1006
972
  i0.ɵɵelementStart(0, "span");
1007
973
  i0.ɵɵtext(1);
1008
974
  i0.ɵɵpipe(2, "currency");
1009
975
  i0.ɵɵelementEnd();
1010
976
  } if (rf & 2) {
1011
- const column_r247 = i0.ɵɵnextContext().$implicit;
1012
- const row_r222 = i0.ɵɵnextContext().$implicit;
1013
- const ctx_r252 = i0.ɵɵnextContext(3);
977
+ const column_r235 = i0.ɵɵnextContext().$implicit;
978
+ const row_r216 = i0.ɵɵnextContext().$implicit;
979
+ const ctx_r240 = i0.ɵɵnextContext(3);
1014
980
  i0.ɵɵadvance();
1015
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r252.getCellData(row_r222, column_r247), column_r247.format, "symbol", "1.2-2"), " ");
981
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r240.getCellData(row_r216, column_r235), column_r235.format, "symbol", "1.2-2"), " ");
1016
982
  } }
1017
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_6_Template(rf, ctx) { if (rf & 1) {
983
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_6_Template(rf, ctx) { if (rf & 1) {
1018
984
  i0.ɵɵelementStart(0, "span");
1019
985
  i0.ɵɵtext(1);
1020
986
  i0.ɵɵpipe(2, "date");
1021
987
  i0.ɵɵelementEnd();
1022
988
  } if (rf & 2) {
1023
- const column_r247 = i0.ɵɵnextContext().$implicit;
1024
- const row_r222 = i0.ɵɵnextContext().$implicit;
1025
- const ctx_r253 = i0.ɵɵnextContext(3);
989
+ const column_r235 = i0.ɵɵnextContext().$implicit;
990
+ const row_r216 = i0.ɵɵnextContext().$implicit;
991
+ const ctx_r241 = i0.ɵɵnextContext(3);
1026
992
  i0.ɵɵadvance();
1027
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r253.getCellData(row_r222, column_r247), column_r247.format || "dd/MM/yyyy"), " ");
993
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r241.getCellData(row_r216, column_r235), column_r235.format || "dd/MM/yyyy"), " ");
1028
994
  } }
1029
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_7_Template(rf, ctx) { if (rf & 1) {
995
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_7_Template(rf, ctx) { if (rf & 1) {
1030
996
  i0.ɵɵelementStart(0, "span");
1031
997
  i0.ɵɵtext(1);
1032
998
  i0.ɵɵpipe(2, "po_time");
1033
999
  i0.ɵɵelementEnd();
1034
1000
  } if (rf & 2) {
1035
- const column_r247 = i0.ɵɵnextContext().$implicit;
1036
- const row_r222 = i0.ɵɵnextContext().$implicit;
1037
- const ctx_r254 = i0.ɵɵnextContext(3);
1001
+ const column_r235 = i0.ɵɵnextContext().$implicit;
1002
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1003
+ const ctx_r242 = i0.ɵɵnextContext(3);
1038
1004
  i0.ɵɵadvance();
1039
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r254.getCellData(row_r222, column_r247), column_r247.format || "HH:mm:ss.ffffff"), " ");
1005
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r242.getCellData(row_r216, column_r235), column_r235.format || "HH:mm:ss.ffffff"), " ");
1040
1006
  } }
1041
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_8_Template(rf, ctx) { if (rf & 1) {
1007
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_8_Template(rf, ctx) { if (rf & 1) {
1042
1008
  i0.ɵɵelementStart(0, "span");
1043
1009
  i0.ɵɵtext(1);
1044
1010
  i0.ɵɵpipe(2, "date");
1045
1011
  i0.ɵɵelementEnd();
1046
1012
  } if (rf & 2) {
1047
- const column_r247 = i0.ɵɵnextContext().$implicit;
1048
- const row_r222 = i0.ɵɵnextContext().$implicit;
1049
- const ctx_r255 = i0.ɵɵnextContext(3);
1013
+ const column_r235 = i0.ɵɵnextContext().$implicit;
1014
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1015
+ const ctx_r243 = i0.ɵɵnextContext(3);
1050
1016
  i0.ɵɵadvance();
1051
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r255.getCellData(row_r222, column_r247), column_r247.format || "dd/MM/yyyy HH:mm:ss"), " ");
1017
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r243.getCellData(row_r216, column_r235), column_r235.format || "dd/MM/yyyy HH:mm:ss"), " ");
1052
1018
  } }
1053
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_9_Template(rf, ctx) { if (rf & 1) {
1019
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_9_Template(rf, ctx) { if (rf & 1) {
1054
1020
  i0.ɵɵelementStart(0, "span");
1055
1021
  i0.ɵɵtext(1);
1056
1022
  i0.ɵɵelementEnd();
1057
1023
  } if (rf & 2) {
1058
- const column_r247 = i0.ɵɵnextContext().$implicit;
1059
- const row_r222 = i0.ɵɵnextContext().$implicit;
1060
- const ctx_r256 = i0.ɵɵnextContext(3);
1024
+ const column_r235 = i0.ɵɵnextContext().$implicit;
1025
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1026
+ const ctx_r244 = i0.ɵɵnextContext(3);
1061
1027
  i0.ɵɵadvance();
1062
- i0.ɵɵtextInterpolate1(" ", ctx_r256.formatNumber(ctx_r256.getCellData(row_r222, column_r247), column_r247.format), " ");
1028
+ i0.ɵɵtextInterpolate1(" ", ctx_r244.formatNumber(ctx_r244.getCellData(row_r216, column_r235), column_r235.format), " ");
1063
1029
  } }
1064
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
1065
- const _r282 = i0.ɵɵgetCurrentView();
1030
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
1031
+ const _r270 = i0.ɵɵgetCurrentView();
1066
1032
  i0.ɵɵelementStart(0, "po-table-column-link", 107);
1067
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r282); const column_r247 = i0.ɵɵnextContext().$implicit; const row_r222 = i0.ɵɵnextContext().$implicit; const ctx_r280 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r280.onClickLink($event, row_r222, column_r247)); });
1033
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r270); const column_r235 = i0.ɵɵnextContext().$implicit; const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r268 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r268.onClickLink($event, row_r216, column_r235)); });
1068
1034
  i0.ɵɵelementEnd();
1069
1035
  } if (rf & 2) {
1070
- const column_r247 = i0.ɵɵnextContext().$implicit;
1071
- const row_r222 = i0.ɵɵnextContext().$implicit;
1072
- const ctx_r257 = i0.ɵɵnextContext(3);
1073
- i0.ɵɵproperty("p-action", column_r247.action)("p-disabled", ctx_r257.checkDisabled(row_r222, column_r247))("p-link", row_r222[column_r247.link])("p-row", row_r222)("p-value", ctx_r257.getCellData(row_r222, column_r247));
1036
+ const column_r235 = i0.ɵɵnextContext().$implicit;
1037
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1038
+ const ctx_r245 = i0.ɵɵnextContext(3);
1039
+ i0.ɵɵproperty("p-action", column_r235.action)("p-disabled", ctx_r245.checkDisabled(row_r216, column_r235))("p-link", row_r216[column_r235.link])("p-row", row_r216)("p-value", ctx_r245.getCellData(row_r216, column_r235));
1074
1040
  } }
1075
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
1041
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
1076
1042
  i0.ɵɵelement(0, "po-table-column-icon", 108);
1077
1043
  } if (rf & 2) {
1078
- const column_r247 = i0.ɵɵnextContext().$implicit;
1079
- const row_r222 = i0.ɵɵnextContext().$implicit;
1080
- const ctx_r258 = i0.ɵɵnextContext(3);
1081
- i0.ɵɵproperty("p-column", column_r247)("p-icons", ctx_r258.getColumnIcons(row_r222, column_r247))("p-row", row_r222);
1044
+ const column_r235 = i0.ɵɵnextContext().$implicit;
1045
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1046
+ const ctx_r246 = i0.ɵɵnextContext(3);
1047
+ i0.ɵɵproperty("p-column", column_r235)("p-icons", ctx_r246.getColumnIcons(row_r216, column_r235))("p-row", row_r216);
1082
1048
  } }
1083
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_12_Template(rf, ctx) { if (rf & 1) {
1049
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_12_Template(rf, ctx) { if (rf & 1) {
1084
1050
  i0.ɵɵelementStart(0, "span");
1085
1051
  i0.ɵɵelement(1, "po-table-subtitle-circle", 109);
1086
1052
  i0.ɵɵelementEnd();
1087
1053
  } if (rf & 2) {
1088
- const column_r247 = i0.ɵɵnextContext().$implicit;
1089
- const row_r222 = i0.ɵɵnextContext().$implicit;
1090
- const ctx_r259 = i0.ɵɵnextContext(3);
1054
+ const column_r235 = i0.ɵɵnextContext().$implicit;
1055
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1056
+ const ctx_r247 = i0.ɵɵnextContext(3);
1091
1057
  i0.ɵɵadvance();
1092
- i0.ɵɵproperty("p-subtitle", ctx_r259.getSubtitleColumn(row_r222, column_r247));
1058
+ i0.ɵɵproperty("p-subtitle", ctx_r247.getSubtitleColumn(row_r216, column_r235));
1093
1059
  } }
1094
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_13_Template(rf, ctx) { if (rf & 1) {
1060
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_13_Template(rf, ctx) { if (rf & 1) {
1095
1061
  i0.ɵɵelementStart(0, "span");
1096
1062
  i0.ɵɵelement(1, "po-table-column-label", 110);
1097
1063
  i0.ɵɵelementEnd();
1098
1064
  } if (rf & 2) {
1099
- const column_r247 = i0.ɵɵnextContext().$implicit;
1100
- const row_r222 = i0.ɵɵnextContext().$implicit;
1101
- const ctx_r260 = i0.ɵɵnextContext(3);
1065
+ const column_r235 = i0.ɵɵnextContext().$implicit;
1066
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1067
+ const ctx_r248 = i0.ɵɵnextContext(3);
1102
1068
  i0.ɵɵadvance();
1103
- i0.ɵɵproperty("p-value", ctx_r260.getColumnLabel(row_r222, column_r247));
1069
+ i0.ɵɵproperty("p-value", ctx_r248.getColumnLabel(row_r216, column_r235));
1104
1070
  } }
1105
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_14_Template(rf, ctx) { if (rf & 1) {
1071
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_14_Template(rf, ctx) { if (rf & 1) {
1106
1072
  i0.ɵɵelementStart(0, "span");
1107
1073
  i0.ɵɵtext(1);
1108
1074
  i0.ɵɵelementEnd();
1109
1075
  } if (rf & 2) {
1110
- const column_r247 = i0.ɵɵnextContext().$implicit;
1111
- const row_r222 = i0.ɵɵnextContext().$implicit;
1112
- const ctx_r261 = i0.ɵɵnextContext(3);
1076
+ const column_r235 = i0.ɵɵnextContext().$implicit;
1077
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1078
+ const ctx_r249 = i0.ɵɵnextContext(3);
1113
1079
  i0.ɵɵadvance();
1114
- i0.ɵɵtextInterpolate(ctx_r261.getCellData(row_r222, column_r247));
1080
+ i0.ɵɵtextInterpolate(ctx_r249.getCellData(row_r216, column_r235));
1115
1081
  } }
1116
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
1117
- const _r295 = i0.ɵɵgetCurrentView();
1082
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
1083
+ const _r283 = i0.ɵɵgetCurrentView();
1118
1084
  i0.ɵɵelementStart(0, "td", 124);
1119
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r295); const row_r222 = i0.ɵɵnextContext().$implicit; const ctx_r294 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r294.hasSelectableRow() ? ctx_r294.selectRow(row_r222) : "javascript:;"); });
1085
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r283); const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r282 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r282.hasSelectableRow() ? ctx_r282.selectRow(row_r216) : "javascript:;"); });
1120
1086
  i0.ɵɵelementStart(1, "div", 102);
1121
- i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r295); const column_r247 = restoredCtx.$implicit; const row_r222 = i0.ɵɵnextContext().$implicit; const ctx_r297 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r297.tooltipMouseEnter($event, column_r247, row_r222)); })("mouseleave", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r295); const ctx_r299 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r299.tooltipMouseLeave()); });
1122
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_2_Template, 2, 4, "span", 103)(3, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_3_Template, 2, 5, "span", 103)(4, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_4_Template, 2, 1, "span", 103)(5, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_5_Template, 3, 6, "span", 103)(6, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_6_Template, 3, 4, "span", 103)(7, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_7_Template, 3, 4, "span", 103)(8, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_8_Template, 3, 4, "span", 103)(9, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_9_Template, 2, 1, "span", 103)(10, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_po_table_column_link_10_Template, 1, 5, "po-table-column-link", 104)(11, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_po_table_column_icon_11_Template, 1, 3, "po-table-column-icon", 105)(12, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_12_Template, 2, 1, "span", 103)(13, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_13_Template, 2, 1, "span", 103)(14, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_span_14_Template, 2, 1, "span", 106);
1087
+ i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r283); const column_r235 = restoredCtx.$implicit; const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r285 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r285.tooltipMouseEnter($event, column_r235, row_r216)); })("mouseleave", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r283); const ctx_r287 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r287.tooltipMouseLeave()); });
1088
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_2_Template, 2, 4, "span", 103)(3, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_3_Template, 2, 5, "span", 103)(4, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_4_Template, 2, 1, "span", 103)(5, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_5_Template, 3, 6, "span", 103)(6, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_6_Template, 3, 4, "span", 103)(7, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_7_Template, 3, 4, "span", 103)(8, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_8_Template, 3, 4, "span", 103)(9, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_9_Template, 2, 1, "span", 103)(10, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_link_10_Template, 1, 5, "po-table-column-link", 104)(11, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_po_table_column_icon_11_Template, 1, 3, "po-table-column-icon", 105)(12, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_12_Template, 2, 1, "span", 103)(13, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_13_Template, 2, 1, "span", 103)(14, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_span_14_Template, 2, 1, "span", 106);
1123
1089
  i0.ɵɵelementEnd()();
1124
1090
  } if (rf & 2) {
1125
- const column_r247 = ctx.$implicit;
1126
- const row_r222 = i0.ɵɵnextContext().$implicit;
1127
- const ctx_r228 = i0.ɵɵnextContext(3);
1128
- i0.ɵɵstyleProp("width", column_r247.width)("max-width", column_r247.width)("min-width", column_r247.width);
1129
- i0.ɵɵclassProp("po-table-column", column_r247.type !== "icon")("po-table-column-right", column_r247.type === "currency" || column_r247.type === "number")("po-table-column-center", column_r247.type === "subtitle")("po-table-column-icons", column_r247.type === "icon");
1130
- i0.ɵɵproperty("ngClass", ctx_r228.getClassColor(row_r222, column_r247))("pFrozenColumn", column_r247.fixed);
1091
+ const column_r235 = ctx.$implicit;
1092
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1093
+ const ctx_r221 = i0.ɵɵnextContext(3);
1094
+ i0.ɵɵstyleProp("width", column_r235.width)("max-width", column_r235.width)("min-width", column_r235.width);
1095
+ i0.ɵɵclassProp("po-table-column", column_r235.type !== "icon")("po-table-column-right", column_r235.type === "currency" || column_r235.type === "number")("po-table-column-center", column_r235.type === "subtitle")("po-table-column-icons", column_r235.type === "icon");
1096
+ i0.ɵɵproperty("ngClass", ctx_r221.getClassColor(row_r216, column_r235))("pFrozenColumn", column_r235.fixed);
1131
1097
  i0.ɵɵadvance();
1132
- i0.ɵɵproperty("ngSwitch", column_r247.type)("p-tooltip", ctx_r228.tooltipText)("p-append-in-body", true);
1098
+ i0.ɵɵproperty("ngSwitch", column_r235.type)("p-tooltip", ctx_r221.tooltipText)("p-append-in-body", true);
1133
1099
  i0.ɵɵadvance();
1134
1100
  i0.ɵɵproperty("ngSwitchCase", "columnTemplate");
1135
1101
  i0.ɵɵadvance();
@@ -1155,112 +1121,110 @@ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template(r
1155
1121
  i0.ɵɵadvance();
1156
1122
  i0.ɵɵproperty("ngSwitchCase", "label");
1157
1123
  } }
1158
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_7_ng_template_1_Template(rf, ctx) { }
1159
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_7_Template(rf, ctx) { if (rf & 1) {
1160
- const _r304 = i0.ɵɵgetCurrentView();
1124
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_ng_template_1_Template(rf, ctx) { }
1125
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
1126
+ const _r292 = i0.ɵɵgetCurrentView();
1161
1127
  i0.ɵɵelementStart(0, "td", 99);
1162
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r304); const row_r222 = i0.ɵɵnextContext().$implicit; const ctx_r302 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r302.toggleDetail(row_r222)); });
1163
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_7_ng_template_1_Template, 0, 0, "ng-template", 100);
1128
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r292); const row_r216 = i0.ɵɵnextContext().$implicit; const ctx_r290 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r290.toggleDetail(row_r216)); });
1129
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_ng_template_1_Template, 0, 0, "ng-template", 100);
1164
1130
  i0.ɵɵelementEnd();
1165
1131
  } if (rf & 2) {
1166
- const ctx_r305 = i0.ɵɵnextContext();
1167
- const row_r222 = ctx_r305.$implicit;
1168
- const rowIndex_r223 = ctx_r305.index;
1132
+ const ctx_r293 = i0.ɵɵnextContext();
1133
+ const row_r216 = ctx_r293.$implicit;
1134
+ const rowIndex_r217 = ctx_r293.index;
1169
1135
  i0.ɵɵnextContext(3);
1170
1136
  const _r13 = i0.ɵɵreference(15);
1171
1137
  i0.ɵɵadvance();
1172
- i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r222, rowIndex_r223));
1138
+ i0.ɵɵproperty("ngTemplateOutlet", _r13)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r216, rowIndex_r217));
1173
1139
  } }
1174
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_8_ng_template_0_Template(rf, ctx) { }
1175
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_8_Template(rf, ctx) { if (rf & 1) {
1176
- i0.ɵɵtemplate(0, PoTableComponent_ng_template_10_ng_container_17_tbody_1_8_ng_template_0_Template, 0, 0, "ng-template", 100);
1140
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_7_ng_template_0_Template(rf, ctx) { }
1141
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_7_Template(rf, ctx) { if (rf & 1) {
1142
+ i0.ɵɵtemplate(0, PoTableComponent_ng_template_10_ng_container_17_tbody_1_7_ng_template_0_Template, 0, 0, "ng-template", 100);
1177
1143
  } if (rf & 2) {
1178
- const ctx_r307 = i0.ɵɵnextContext();
1179
- const row_r222 = ctx_r307.$implicit;
1180
- const rowIndex_r223 = ctx_r307.index;
1144
+ const ctx_r295 = i0.ɵɵnextContext();
1145
+ const row_r216 = ctx_r295.$implicit;
1146
+ const rowIndex_r217 = ctx_r295.index;
1181
1147
  i0.ɵɵnextContext(3);
1182
1148
  const _r25 = i0.ɵɵreference(27);
1183
- i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r222, rowIndex_r223));
1149
+ i0.ɵɵproperty("ngTemplateOutlet", _r25)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c19, row_r216, rowIndex_r217));
1184
1150
  } }
1185
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_ng_template_2_Template(rf, ctx) { }
1186
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_Template(rf, ctx) { if (rf & 1) {
1151
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_8_ng_template_2_Template(rf, ctx) { }
1152
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_8_Template(rf, ctx) { if (rf & 1) {
1187
1153
  i0.ɵɵelementStart(0, "tr")(1, "td", 111);
1188
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_ng_template_2_Template, 0, 0, "ng-template", 100);
1154
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_8_ng_template_2_Template, 0, 0, "ng-template", 100);
1189
1155
  i0.ɵɵelementEnd()();
1190
1156
  } if (rf & 2) {
1191
- const ctx_r309 = i0.ɵɵnextContext();
1192
- const row_r222 = ctx_r309.$implicit;
1193
- const rowIndex_r223 = ctx_r309.index;
1194
- const ctx_r231 = i0.ɵɵnextContext(3);
1157
+ const ctx_r297 = i0.ɵɵnextContext();
1158
+ const row_r216 = ctx_r297.$implicit;
1159
+ const rowIndex_r217 = ctx_r297.index;
1160
+ const ctx_r224 = i0.ɵɵnextContext(3);
1195
1161
  i0.ɵɵadvance();
1196
- i0.ɵɵproperty("colSpan", ctx_r231.columnCountForMasterDetail);
1162
+ i0.ɵɵproperty("colSpan", ctx_r224.columnCountForMasterDetail);
1197
1163
  i0.ɵɵadvance();
1198
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r231.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c21, row_r222, rowIndex_r223));
1164
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r224.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c21, row_r216, rowIndex_r217));
1199
1165
  } }
1200
- function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_10_Template(rf, ctx) { if (rf & 1) {
1201
- const _r311 = i0.ɵɵgetCurrentView();
1166
+ function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_Template(rf, ctx) { if (rf & 1) {
1167
+ const _r299 = i0.ɵɵgetCurrentView();
1202
1168
  i0.ɵɵelementStart(0, "tr")(1, "td", 112)(2, "po-table-detail", 113);
1203
- i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_10_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r311); const ctx_r310 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r310.selectDetailRow($event)); });
1169
+ i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r299); const ctx_r298 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r298.selectDetailRow($event)); });
1204
1170
  i0.ɵɵelementEnd()()();
1205
1171
  } if (rf & 2) {
1206
- const row_r222 = i0.ɵɵnextContext().$implicit;
1207
- const ctx_r232 = i0.ɵɵnextContext(3);
1172
+ const row_r216 = i0.ɵɵnextContext().$implicit;
1173
+ const ctx_r225 = i0.ɵɵnextContext(3);
1208
1174
  i0.ɵɵadvance();
1209
- i0.ɵɵproperty("colSpan", ctx_r232.columnCountForMasterDetail);
1175
+ i0.ɵɵproperty("colSpan", ctx_r225.columnCountForMasterDetail);
1210
1176
  i0.ɵɵadvance();
1211
- i0.ɵɵproperty("p-selectable", ctx_r232.selectable && !ctx_r232.detailHideSelect)("p-detail", ctx_r232.columnMasterDetail.detail)("p-items", row_r222[ctx_r232.nameColumnDetail])("p-parent-row", row_r222);
1177
+ i0.ɵɵproperty("p-selectable", ctx_r225.selectable && !ctx_r225.detailHideSelect)("p-detail", ctx_r225.columnMasterDetail.detail)("p-items", row_r216[ctx_r225.nameColumnDetail])("p-parent-row", row_r216);
1212
1178
  } }
1213
1179
  function PoTableComponent_ng_template_10_ng_container_17_tbody_1_Template(rf, ctx) { if (rf & 1) {
1214
1180
  i0.ɵɵelementStart(0, "tbody", 91)(1, "tr", 95);
1215
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_Template, 2, 4, "td", 96)(3, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template, 2, 5, "td", 97)(4, PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_Template, 1, 5, null, 43)(5, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template, 2, 5, "td", 97)(6, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template, 15, 31, "td", 123)(7, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_7_Template, 2, 5, "td", 97)(8, PoTableComponent_ng_template_10_ng_container_17_tbody_1_8_Template, 1, 5, null, 43);
1181
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_2_Template, 2, 4, "td", 96)(3, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_3_Template, 2, 5, "td", 97)(4, PoTableComponent_ng_template_10_ng_container_17_tbody_1_4_Template, 1, 5, null, 43)(5, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_5_Template, 15, 31, "td", 123)(6, PoTableComponent_ng_template_10_ng_container_17_tbody_1_td_6_Template, 2, 5, "td", 97)(7, PoTableComponent_ng_template_10_ng_container_17_tbody_1_7_Template, 1, 5, null, 43);
1216
1182
  i0.ɵɵelementEnd();
1217
- i0.ɵɵtemplate(9, PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_Template, 3, 6, "tr", 43)(10, PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_10_Template, 3, 5, "tr", 43);
1183
+ i0.ɵɵtemplate(8, PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_8_Template, 3, 6, "tr", 43)(9, PoTableComponent_ng_template_10_ng_container_17_tbody_1_tr_9_Template, 3, 5, "tr", 43);
1218
1184
  i0.ɵɵelementEnd();
1219
1185
  } if (rf & 2) {
1220
- const row_r222 = ctx.$implicit;
1221
- const rowIndex_r223 = ctx.index;
1222
- const ctx_r221 = i0.ɵɵnextContext(3);
1223
- i0.ɵɵadvance();
1224
- i0.ɵɵclassProp("po-table-row-active", row_r222.$selected || row_r222.$selected === null && ctx_r221.selectable);
1186
+ const row_r216 = ctx.$implicit;
1187
+ const rowIndex_r217 = ctx.index;
1188
+ const ctx_r215 = i0.ɵɵnextContext(3);
1225
1189
  i0.ɵɵadvance();
1226
- i0.ɵɵproperty("ngIf", ctx_r221.selectable);
1190
+ i0.ɵɵclassProp("po-table-row-active", row_r216.$selected || row_r216.$selected === null && ctx_r215.selectable);
1227
1191
  i0.ɵɵadvance();
1228
- i0.ɵɵproperty("ngIf", ctx_r221.columnMasterDetail && !ctx_r221.hideDetail && !ctx_r221.hasRowTemplate);
1192
+ i0.ɵɵproperty("ngIf", ctx_r215.selectable);
1229
1193
  i0.ɵɵadvance();
1230
- i0.ɵɵproperty("ngIf", !ctx_r221.actionRight && (ctx_r221.visibleActions.length > 1 || ctx_r221.isSingleAction));
1194
+ i0.ɵɵproperty("ngIf", ctx_r215.columnMasterDetail && !ctx_r215.hideDetail && !ctx_r215.hasRowTemplate || ctx_r215.hasRowTemplate && !ctx_r215.hasRowTemplateWithArrowDirectionRight);
1231
1195
  i0.ɵɵadvance();
1232
- i0.ɵɵproperty("ngIf", ctx_r221.hasRowTemplate && !ctx_r221.hasRowTemplateWithArrowDirectionRight);
1196
+ i0.ɵɵproperty("ngIf", !ctx_r215.actionRight && (ctx_r215.visibleActions.length > 1 || ctx_r215.isSingleAction));
1233
1197
  i0.ɵɵadvance();
1234
- i0.ɵɵproperty("ngForOf", ctx_r221.mainColumns)("ngForTrackBy", ctx_r221.trackBy);
1198
+ i0.ɵɵproperty("ngForOf", ctx_r215.mainColumns)("ngForTrackBy", ctx_r215.trackBy);
1235
1199
  i0.ɵɵadvance();
1236
- i0.ɵɵproperty("ngIf", ctx_r221.hasRowTemplateWithArrowDirectionRight);
1200
+ i0.ɵɵproperty("ngIf", ctx_r215.hasRowTemplateWithArrowDirectionRight);
1237
1201
  i0.ɵɵadvance();
1238
- i0.ɵɵproperty("ngIf", ctx_r221.actionRight);
1202
+ i0.ɵɵproperty("ngIf", ctx_r215.actionRight);
1239
1203
  i0.ɵɵadvance();
1240
- i0.ɵɵproperty("ngIf", ctx_r221.hasMainColumns && ctx_r221.hasRowTemplate && row_r222.$showDetail && ctx_r221.isShowRowTemplate(row_r222, rowIndex_r223));
1204
+ i0.ɵɵproperty("ngIf", ctx_r215.hasMainColumns && ctx_r215.hasRowTemplate && row_r216.$showDetail && ctx_r215.isShowRowTemplate(row_r216, rowIndex_r217));
1241
1205
  i0.ɵɵadvance();
1242
- i0.ɵɵproperty("ngIf", ctx_r221.hasMainColumns && ctx_r221.isShowMasterDetail(row_r222));
1206
+ i0.ɵɵproperty("ngIf", ctx_r215.hasMainColumns && ctx_r215.isShowMasterDetail(row_r216));
1243
1207
  } }
1244
1208
  function PoTableComponent_ng_template_10_ng_container_17_Template(rf, ctx) { if (rf & 1) {
1245
1209
  i0.ɵɵelementContainerStart(0);
1246
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_Template, 11, 12, "tbody", 122);
1210
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_10_ng_container_17_tbody_1_Template, 10, 11, "tbody", 122);
1247
1211
  i0.ɵɵelementContainerEnd();
1248
1212
  } if (rf & 2) {
1249
- const ctx_r199 = i0.ɵɵnextContext(2);
1213
+ const ctx_r193 = i0.ɵɵnextContext(2);
1250
1214
  i0.ɵɵadvance();
1251
- i0.ɵɵproperty("cdkVirtualForOf", ctx_r199.filteredItems)("cdkVirtualForTrackBy", ctx_r199.trackBy);
1215
+ i0.ɵɵproperty("cdkVirtualForOf", ctx_r193.filteredItems)("cdkVirtualForTrackBy", ctx_r193.trackBy);
1252
1216
  } }
1253
1217
  function PoTableComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
1254
- const _r314 = i0.ɵɵgetCurrentView();
1218
+ const _r302 = i0.ɵɵgetCurrentView();
1255
1219
  i0.ɵɵelementStart(0, "cdk-virtual-scroll-viewport", 114, 115)(2, "table", 56)(3, "thead", 116)(4, "tr", 117);
1256
- i0.ɵɵlistener("cdkDropListDropped", function PoTableComponent_ng_template_10_Template_tr_cdkDropListDropped_4_listener($event) { i0.ɵɵrestoreView(_r314); const ctx_r313 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r313.drop($event)); });
1220
+ i0.ɵɵlistener("cdkDropListDropped", function PoTableComponent_ng_template_10_Template_tr_cdkDropListDropped_4_listener($event) { i0.ɵɵrestoreView(_r302); const ctx_r301 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r301.drop($event)); });
1257
1221
  i0.ɵɵtemplate(5, PoTableComponent_ng_template_10_th_5_Template, 3, 5, "th", 59)(6, PoTableComponent_ng_template_10_th_6_Template, 1, 0, "th", 60)(7, PoTableComponent_ng_template_10_th_7_Template, 2, 4, "th", 61)(8, PoTableComponent_ng_template_10_th_8_Template, 3, 3, "th", 62)(9, PoTableComponent_ng_template_10_ng_container_9_Template, 1, 0, "ng-container", 63)(10, PoTableComponent_ng_template_10_ng_template_10_Template, 1, 2, "ng-template", null, 118, i0.ɵɵtemplateRefExtractor)(12, PoTableComponent_ng_template_10_ng_template_12_Template, 1, 2, "ng-template", null, 119, i0.ɵɵtemplateRefExtractor)(14, PoTableComponent_ng_template_10_th_14_Template, 1, 0, "th", 60)(15, PoTableComponent_ng_template_10_th_15_Template, 1, 4, "th", 66);
1258
1222
  i0.ɵɵelementEnd()();
1259
1223
  i0.ɵɵtemplate(16, PoTableComponent_ng_template_10_tbody_16_Template, 5, 2, "tbody", 67)(17, PoTableComponent_ng_template_10_ng_container_17_Template, 2, 2, "ng-container", 43);
1260
1224
  i0.ɵɵelementEnd()();
1261
1225
  } if (rf & 2) {
1262
- const _r193 = i0.ɵɵreference(11);
1263
- const _r195 = i0.ɵɵreference(13);
1226
+ const _r187 = i0.ɵɵreference(11);
1227
+ const _r189 = i0.ɵɵreference(13);
1264
1228
  const ctx_r9 = i0.ɵɵnextContext();
1265
1229
  i0.ɵɵstyleProp("height", ctx_r9.heightTableContainer, "px");
1266
1230
  i0.ɵɵproperty("itemSize", ctx_r9.itemSize)("minBufferPx", ctx_r9.heightTableContainer < 100 ? 100 : ctx_r9.heightTableContainer)("maxBufferPx", ctx_r9.heightTableContainer < 200 ? 200 : ctx_r9.heightTableContainer);
@@ -1274,15 +1238,15 @@ function PoTableComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
1274
1238
  i0.ɵɵadvance();
1275
1239
  i0.ɵɵproperty("ngIf", ctx_r9.hasSelectableColumn);
1276
1240
  i0.ɵɵadvance();
1277
- i0.ɵɵproperty("ngIf", (ctx_r9.hasMasterDetailColumn || ctx_r9.hasRowTemplate) && !ctx_r9.hasRowTemplateWithArrowDirectionRight);
1241
+ i0.ɵɵproperty("ngIf", (ctx_r9.hasMasterDetailColumn || ctx_r9.hasRowTemplate) && ctx_r9.hasMainColumns && !ctx_r9.hasRowTemplateWithArrowDirectionRight);
1278
1242
  i0.ɵɵadvance();
1279
1243
  i0.ɵɵproperty("ngIf", !ctx_r9.actionRight && (ctx_r9.visibleActions.length > 1 || ctx_r9.isSingleAction));
1280
1244
  i0.ɵɵadvance();
1281
1245
  i0.ɵɵproperty("ngIf", !ctx_r9.hasMainColumns);
1282
1246
  i0.ɵɵadvance();
1283
- i0.ɵɵproperty("ngIf", ctx_r9.isDraggable || ctx_r9.hasSomeFixed())("ngIfThen", _r193)("ngIfElse", _r195);
1247
+ i0.ɵɵproperty("ngIf", ctx_r9.isDraggable || ctx_r9.hasSomeFixed())("ngIfThen", _r187)("ngIfElse", _r189);
1284
1248
  i0.ɵɵadvance(5);
1285
- i0.ɵɵproperty("ngIf", ctx_r9.hasRowTemplateWithArrowDirectionRight && (ctx_r9.hasVisibleActions || ctx_r9.hideColumnsManager));
1249
+ i0.ɵɵproperty("ngIf", ctx_r9.hasRowTemplateWithArrowDirectionRight && ctx_r9.hasMainColumns && (ctx_r9.hasVisibleActions || ctx_r9.hideColumnsManager));
1286
1250
  i0.ɵɵadvance();
1287
1251
  i0.ɵɵproperty("ngIf", ctx_r9.hasVisibleActions && ctx_r9.actionRight && (ctx_r9.visibleActions.length > 1 || ctx_r9.isSingleAction));
1288
1252
  i0.ɵɵadvance();
@@ -1293,35 +1257,35 @@ function PoTableComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
1293
1257
  function PoTableComponent_ng_template_14_po_icon_0_Template(rf, ctx) { if (rf & 1) {
1294
1258
  i0.ɵɵelement(0, "po-icon", 126);
1295
1259
  } if (rf & 2) {
1296
- const row_r315 = i0.ɵɵnextContext().row;
1297
- i0.ɵɵproperty("p-icon", row_r315.$showDetail ? "ICON_ARROW_UP" : "ICON_ARROW_DOWN");
1260
+ const row_r303 = i0.ɵɵnextContext().row;
1261
+ i0.ɵɵproperty("p-icon", row_r303.$showDetail ? "ICON_ARROW_UP" : "ICON_ARROW_DOWN");
1298
1262
  } }
1299
1263
  function PoTableComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
1300
1264
  i0.ɵɵtemplate(0, PoTableComponent_ng_template_14_po_icon_0_Template, 1, 1, "po-icon", 125);
1301
1265
  } if (rf & 2) {
1302
- const row_r315 = ctx.row;
1303
- const rowIndex_r316 = ctx.rowIndex;
1266
+ const row_r303 = ctx.row;
1267
+ const rowIndex_r304 = ctx.rowIndex;
1304
1268
  const ctx_r12 = i0.ɵɵnextContext();
1305
- i0.ɵɵproperty("ngIf", ctx_r12.containsMasterDetail(row_r315) && !ctx_r12.hasRowTemplate || ctx_r12.isShowRowTemplate(row_r315, rowIndex_r316) && ctx_r12.hasRowTemplate);
1269
+ i0.ɵɵproperty("ngIf", ctx_r12.containsMasterDetail(row_r303) && !ctx_r12.hasRowTemplate || ctx_r12.isShowRowTemplate(row_r303, rowIndex_r304) && ctx_r12.hasRowTemplate);
1306
1270
  } }
1307
1271
  function PoTableComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
1308
- const _r321 = i0.ɵɵgetCurrentView();
1272
+ const _r309 = i0.ɵɵgetCurrentView();
1309
1273
  i0.ɵɵelementStart(0, "po-radio", 127);
1310
- i0.ɵɵlistener("p-change-selected", function PoTableComponent_ng_template_16_Template_po_radio_p_change_selected_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r321); const row_r319 = restoredCtx.$implicit; const ctx_r320 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r320.selectRow(row_r319)); });
1274
+ i0.ɵɵlistener("p-change-selected", function PoTableComponent_ng_template_16_Template_po_radio_p_change_selected_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r309); const row_r307 = restoredCtx.$implicit; const ctx_r308 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r308.selectRow(row_r307)); });
1311
1275
  i0.ɵɵelementEnd();
1312
1276
  } if (rf & 2) {
1313
- const row_r319 = ctx.$implicit;
1277
+ const row_r307 = ctx.$implicit;
1314
1278
  const ctx_r14 = i0.ɵɵnextContext();
1315
- i0.ɵɵproperty("name", ctx_r14.idRadio)("p-checked", row_r319.$selected);
1279
+ i0.ɵɵproperty("name", ctx_r14.idRadio)("p-checked", row_r307.$selected);
1316
1280
  } }
1317
1281
  function PoTableComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
1318
- const _r324 = i0.ɵɵgetCurrentView();
1282
+ const _r312 = i0.ɵɵgetCurrentView();
1319
1283
  i0.ɵɵelementStart(0, "po-checkbox", 128);
1320
- i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_18_Template_po_checkbox_p_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r324); const row_r322 = restoredCtx.$implicit; const ctx_r323 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r323.selectable ? ctx_r323.selectRow(row_r322) : "javascript:;"); });
1284
+ i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_18_Template_po_checkbox_p_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r312); const row_r310 = restoredCtx.$implicit; const ctx_r311 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r311.selectable ? ctx_r311.selectRow(row_r310) : "javascript:;"); });
1321
1285
  i0.ɵɵelementEnd();
1322
1286
  } if (rf & 2) {
1323
- const row_r322 = ctx.$implicit;
1324
- i0.ɵɵproperty("p-checkboxValue", row_r322.$selected === null ? "mixed" : row_r322.$selected);
1287
+ const row_r310 = ctx.$implicit;
1288
+ i0.ɵɵproperty("p-checkboxValue", row_r310.$selected === null ? "mixed" : row_r310.$selected);
1325
1289
  } }
1326
1290
  function PoTableComponent_ng_template_20_span_4_ng_container_1_po_icon_1_Template(rf, ctx) { if (rf & 1) {
1327
1291
  i0.ɵɵelement(0, "po-icon", 134);
@@ -1337,11 +1301,11 @@ function PoTableComponent_ng_template_20_span_4_ng_container_1_Template(rf, ctx)
1337
1301
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_20_span_4_ng_container_1_po_icon_1_Template, 1, 0, "po-icon", 132)(2, PoTableComponent_ng_template_20_span_4_ng_container_1__svg_svg_2_Template, 2, 0, "svg", 133);
1338
1302
  i0.ɵɵelementContainerEnd();
1339
1303
  } if (rf & 2) {
1340
- const ctx_r328 = i0.ɵɵnextContext(3);
1304
+ const ctx_r316 = i0.ɵɵnextContext(3);
1341
1305
  i0.ɵɵadvance();
1342
- i0.ɵɵproperty("ngIf", ctx_r328.iconNameLib === "PhosphorIcon");
1306
+ i0.ɵɵproperty("ngIf", ctx_r316.iconNameLib === "PhosphorIcon");
1343
1307
  i0.ɵɵadvance();
1344
- i0.ɵɵproperty("ngIf", ctx_r328.iconNameLib === "PoIcon");
1308
+ i0.ɵɵproperty("ngIf", ctx_r316.iconNameLib === "PoIcon");
1345
1309
  } }
1346
1310
  function PoTableComponent_ng_template_20_span_4_ng_container_2_po_icon_1_Template(rf, ctx) { if (rf & 1) {
1347
1311
  i0.ɵɵelement(0, "po-icon", 138);
@@ -1357,11 +1321,11 @@ function PoTableComponent_ng_template_20_span_4_ng_container_2_Template(rf, ctx)
1357
1321
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_20_span_4_ng_container_2_po_icon_1_Template, 1, 0, "po-icon", 137)(2, PoTableComponent_ng_template_20_span_4_ng_container_2__svg_svg_2_Template, 2, 0, "svg", 133);
1358
1322
  i0.ɵɵelementContainerEnd();
1359
1323
  } if (rf & 2) {
1360
- const ctx_r329 = i0.ɵɵnextContext(3);
1324
+ const ctx_r317 = i0.ɵɵnextContext(3);
1361
1325
  i0.ɵɵadvance();
1362
- i0.ɵɵproperty("ngIf", ctx_r329.iconNameLib === "PhosphorIcon");
1326
+ i0.ɵɵproperty("ngIf", ctx_r317.iconNameLib === "PhosphorIcon");
1363
1327
  i0.ɵɵadvance();
1364
- i0.ɵɵproperty("ngIf", ctx_r329.iconNameLib === "PoIcon");
1328
+ i0.ɵɵproperty("ngIf", ctx_r317.iconNameLib === "PoIcon");
1365
1329
  } }
1366
1330
  function PoTableComponent_ng_template_20_span_4_ng_container_3_po_icon_1_Template(rf, ctx) { if (rf & 1) {
1367
1331
  i0.ɵɵelement(0, "po-icon", 141);
@@ -1377,43 +1341,43 @@ function PoTableComponent_ng_template_20_span_4_ng_container_3_Template(rf, ctx)
1377
1341
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_20_span_4_ng_container_3_po_icon_1_Template, 1, 0, "po-icon", 140)(2, PoTableComponent_ng_template_20_span_4_ng_container_3__svg_svg_2_Template, 2, 0, "svg", 133);
1378
1342
  i0.ɵɵelementContainerEnd();
1379
1343
  } if (rf & 2) {
1380
- const ctx_r330 = i0.ɵɵnextContext(3);
1344
+ const ctx_r318 = i0.ɵɵnextContext(3);
1381
1345
  i0.ɵɵadvance();
1382
- i0.ɵɵproperty("ngIf", ctx_r330.iconNameLib === "PhosphorIcon");
1346
+ i0.ɵɵproperty("ngIf", ctx_r318.iconNameLib === "PhosphorIcon");
1383
1347
  i0.ɵɵadvance();
1384
- i0.ɵɵproperty("ngIf", ctx_r330.iconNameLib === "PoIcon");
1348
+ i0.ɵɵproperty("ngIf", ctx_r318.iconNameLib === "PoIcon");
1385
1349
  } }
1386
1350
  function PoTableComponent_ng_template_20_span_4_Template(rf, ctx) { if (rf & 1) {
1387
1351
  i0.ɵɵelementStart(0, "span");
1388
1352
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_20_span_4_ng_container_1_Template, 3, 2, "ng-container", 43)(2, PoTableComponent_ng_template_20_span_4_ng_container_2_Template, 3, 2, "ng-container", 43)(3, PoTableComponent_ng_template_20_span_4_ng_container_3_Template, 3, 2, "ng-container", 43);
1389
1353
  i0.ɵɵelementEnd();
1390
1354
  } if (rf & 2) {
1391
- const column_r325 = i0.ɵɵnextContext().$implicit;
1392
- const ctx_r327 = i0.ɵɵnextContext();
1393
- i0.ɵɵclassProp("po-table-header-icon-unselected", ctx_r327.JSON.stringify(ctx_r327.sortedColumn == null ? null : ctx_r327.sortedColumn.property) !== ctx_r327.JSON.stringify(column_r325))("po-table-header-icon-descending", ctx_r327.JSON.stringify(ctx_r327.sortedColumn == null ? null : ctx_r327.sortedColumn.property) === ctx_r327.JSON.stringify(column_r325) && ctx_r327.sortedColumn.ascending)("po-table-header-icon-ascending", ctx_r327.JSON.stringify(ctx_r327.sortedColumn == null ? null : ctx_r327.sortedColumn.property) === ctx_r327.JSON.stringify(column_r325) && !ctx_r327.sortedColumn.ascending);
1355
+ const column_r313 = i0.ɵɵnextContext().$implicit;
1356
+ const ctx_r315 = i0.ɵɵnextContext();
1357
+ i0.ɵɵclassProp("po-table-header-icon-unselected", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) !== ctx_r315.JSON.stringify(column_r313))("po-table-header-icon-descending", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) === ctx_r315.JSON.stringify(column_r313) && ctx_r315.sortedColumn.ascending)("po-table-header-icon-ascending", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) === ctx_r315.JSON.stringify(column_r313) && !ctx_r315.sortedColumn.ascending);
1394
1358
  i0.ɵɵadvance();
1395
- i0.ɵɵproperty("ngIf", ctx_r327.JSON.stringify(ctx_r327.sortedColumn == null ? null : ctx_r327.sortedColumn.property) !== ctx_r327.JSON.stringify(column_r325));
1359
+ i0.ɵɵproperty("ngIf", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) !== ctx_r315.JSON.stringify(column_r313));
1396
1360
  i0.ɵɵadvance();
1397
- i0.ɵɵproperty("ngIf", ctx_r327.JSON.stringify(ctx_r327.sortedColumn == null ? null : ctx_r327.sortedColumn.property) === ctx_r327.JSON.stringify(column_r325) && ctx_r327.sortedColumn.ascending);
1361
+ i0.ɵɵproperty("ngIf", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) === ctx_r315.JSON.stringify(column_r313) && ctx_r315.sortedColumn.ascending);
1398
1362
  i0.ɵɵadvance();
1399
- i0.ɵɵproperty("ngIf", ctx_r327.JSON.stringify(ctx_r327.sortedColumn == null ? null : ctx_r327.sortedColumn.property) === ctx_r327.JSON.stringify(column_r325) && !ctx_r327.sortedColumn.ascending);
1363
+ i0.ɵɵproperty("ngIf", ctx_r315.JSON.stringify(ctx_r315.sortedColumn == null ? null : ctx_r315.sortedColumn.property) === ctx_r315.JSON.stringify(column_r313) && !ctx_r315.sortedColumn.ascending);
1400
1364
  } }
1401
1365
  function PoTableComponent_ng_template_20_Template(rf, ctx) { if (rf & 1) {
1402
- const _r339 = i0.ɵɵgetCurrentView();
1366
+ const _r327 = i0.ɵɵgetCurrentView();
1403
1367
  i0.ɵɵelementStart(0, "span", 129, 130);
1404
- i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_20_Template_span_mouseenter_0_listener($event) { i0.ɵɵrestoreView(_r339); const ctx_r338 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r338.tooltipMouseEnter($event)); })("mouseleave", function PoTableComponent_ng_template_20_Template_span_mouseleave_0_listener() { i0.ɵɵrestoreView(_r339); const ctx_r340 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r340.tooltipMouseLeave()); });
1368
+ i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_20_Template_span_mouseenter_0_listener($event) { i0.ɵɵrestoreView(_r327); const ctx_r326 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r326.tooltipMouseEnter($event)); })("mouseleave", function PoTableComponent_ng_template_20_Template_span_mouseleave_0_listener() { i0.ɵɵrestoreView(_r327); const ctx_r328 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r328.tooltipMouseLeave()); });
1405
1369
  i0.ɵɵtext(2);
1406
1370
  i0.ɵɵpipe(3, "titlecase");
1407
1371
  i0.ɵɵelementEnd();
1408
1372
  i0.ɵɵtemplate(4, PoTableComponent_ng_template_20_span_4_Template, 4, 9, "span", 131);
1409
1373
  } if (rf & 2) {
1410
- const column_r325 = ctx.$implicit;
1374
+ const column_r313 = ctx.$implicit;
1411
1375
  const ctx_r18 = i0.ɵɵnextContext();
1412
1376
  i0.ɵɵproperty("p-tooltip", ctx_r18.tooltipText)("p-append-in-body", true);
1413
1377
  i0.ɵɵadvance(2);
1414
- i0.ɵɵtextInterpolate1(" ", column_r325.label || i0.ɵɵpipeBind1(3, 4, column_r325.property), " ");
1378
+ i0.ɵɵtextInterpolate1(" ", column_r313.label || i0.ɵɵpipeBind1(3, 4, column_r313.property), " ");
1415
1379
  i0.ɵɵadvance(2);
1416
- i0.ɵɵproperty("ngIf", ctx_r18.sort && column_r325.sortable !== false);
1380
+ i0.ɵɵproperty("ngIf", ctx_r18.sort && column_r313.sortable !== false);
1417
1381
  } }
1418
1382
  function PoTableComponent_ng_template_22_Template(rf, ctx) { if (rf & 1) {
1419
1383
  i0.ɵɵelementStart(0, "div", 143);
@@ -1434,39 +1398,39 @@ function PoTableComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
1434
1398
  function PoTableComponent_ng_template_26_td_0_div_1_po_icon_1_Template(rf, ctx) { if (rf & 1) {
1435
1399
  i0.ɵɵelement(0, "po-icon", 150);
1436
1400
  } if (rf & 2) {
1437
- const ctx_r346 = i0.ɵɵnextContext(4);
1438
- i0.ɵɵproperty("p-icon", ctx_r346.firstAction.icon);
1401
+ const ctx_r334 = i0.ɵɵnextContext(4);
1402
+ i0.ɵɵproperty("p-icon", ctx_r334.firstAction.icon);
1439
1403
  } }
1440
1404
  function PoTableComponent_ng_template_26_td_0_div_1_Template(rf, ctx) { if (rf & 1) {
1441
- const _r349 = i0.ɵɵgetCurrentView();
1405
+ const _r337 = i0.ɵɵgetCurrentView();
1442
1406
  i0.ɵɵelementStart(0, "div", 148);
1443
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_26_td_0_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r349); const row_r341 = i0.ɵɵnextContext(2).row; const ctx_r347 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r347.executeTableAction(row_r341, ctx_r347.firstAction)); });
1407
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_26_td_0_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r337); const row_r329 = i0.ɵɵnextContext(2).row; const ctx_r335 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r335.executeTableAction(row_r329, ctx_r335.firstAction)); });
1444
1408
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_26_td_0_div_1_po_icon_1_Template, 1, 1, "po-icon", 149);
1445
1409
  i0.ɵɵtext(2);
1446
1410
  i0.ɵɵelementEnd();
1447
1411
  } if (rf & 2) {
1448
- const row_r341 = i0.ɵɵnextContext(2).row;
1449
- const ctx_r345 = i0.ɵɵnextContext();
1450
- i0.ɵɵclassProp("po-table-action-disabled", ctx_r345.firstAction.disabled ? ctx_r345.validateTableAction(row_r341, ctx_r345.firstAction) : false);
1412
+ const row_r329 = i0.ɵɵnextContext(2).row;
1413
+ const ctx_r333 = i0.ɵɵnextContext();
1414
+ i0.ɵɵclassProp("po-table-action-disabled", ctx_r333.firstAction.disabled ? ctx_r333.validateTableAction(row_r329, ctx_r333.firstAction) : false);
1451
1415
  i0.ɵɵadvance();
1452
- i0.ɵɵproperty("ngIf", ctx_r345.firstAction.icon);
1416
+ i0.ɵɵproperty("ngIf", ctx_r333.firstAction.icon);
1453
1417
  i0.ɵɵadvance();
1454
- i0.ɵɵtextInterpolate1(" ", ctx_r345.firstAction.label, " ");
1418
+ i0.ɵɵtextInterpolate1(" ", ctx_r333.firstAction.label, " ");
1455
1419
  } }
1456
1420
  function PoTableComponent_ng_template_26_td_0_Template(rf, ctx) { if (rf & 1) {
1457
1421
  i0.ɵɵelementStart(0, "td", 146);
1458
1422
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_26_td_0_div_1_Template, 3, 4, "div", 147);
1459
1423
  i0.ɵɵelementEnd();
1460
1424
  } if (rf & 2) {
1461
- const ctx_r343 = i0.ɵɵnextContext(2);
1462
- i0.ɵɵstyleProp("width", ctx_r343.height && ctx_r343.actionRight ? ctx_r343.getWidthColumnManager() : "", "px")("max-width", ctx_r343.height && !ctx_r343.actionRight ? ctx_r343.getColumnWidthActionsLeft() : "", "px")("width", ctx_r343.height && !ctx_r343.actionRight ? ctx_r343.getColumnWidthActionsLeft() : "", "px");
1425
+ const ctx_r331 = i0.ɵɵnextContext(2);
1426
+ i0.ɵɵstyleProp("width", ctx_r331.height && ctx_r331.actionRight ? ctx_r331.getWidthColumnManager() : "", "px")("max-width", ctx_r331.height && !ctx_r331.actionRight ? ctx_r331.getColumnWidthActionsLeft() : "", "px")("width", ctx_r331.height && !ctx_r331.actionRight ? ctx_r331.getColumnWidthActionsLeft() : "", "px");
1463
1427
  i0.ɵɵadvance();
1464
- i0.ɵɵproperty("ngIf", ctx_r343.firstAction.visible !== false);
1428
+ i0.ɵɵproperty("ngIf", ctx_r331.firstAction.visible !== false);
1465
1429
  } }
1466
1430
  function PoTableComponent_ng_template_26_td_1_Template(rf, ctx) { if (rf & 1) {
1467
- const _r354 = i0.ɵɵgetCurrentView();
1431
+ const _r342 = i0.ɵɵgetCurrentView();
1468
1432
  i0.ɵɵelementStart(0, "td", 151)(1, "div", 152, 153);
1469
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_26_td_1_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r354); const _r351 = i0.ɵɵreference(2); const row_r341 = i0.ɵɵnextContext().row; const ctx_r352 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r352.togglePopup(row_r341, _r351)); });
1433
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_26_td_1_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r342); const _r339 = i0.ɵɵreference(2); const row_r329 = i0.ɵɵnextContext().row; const ctx_r340 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r340.togglePopup(row_r329, _r339)); });
1470
1434
  i0.ɵɵelement(3, "po-icon", 154);
1471
1435
  i0.ɵɵelementEnd()();
1472
1436
  } }
@@ -1479,9 +1443,9 @@ function PoTableComponent_ng_template_26_Template(rf, ctx) { if (rf & 1) {
1479
1443
  i0.ɵɵproperty("ngIf", ctx_r24.visibleActions.length > 1);
1480
1444
  } }
1481
1445
  function PoTableComponent_po_table_column_manager_28_Template(rf, ctx) { if (rf & 1) {
1482
- const _r356 = i0.ɵɵgetCurrentView();
1446
+ const _r344 = i0.ɵɵgetCurrentView();
1483
1447
  i0.ɵɵelementStart(0, "po-table-column-manager", 155);
1484
- i0.ɵɵlistener("p-visible-columns-change", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_visible_columns_change_0_listener($event) { i0.ɵɵrestoreView(_r356); const ctx_r355 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r355.onVisibleColumnsChange($event)); })("p-change-visible-columns", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_change_visible_columns_0_listener($event) { i0.ɵɵrestoreView(_r356); const ctx_r357 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r357.onChangeVisibleColumns($event)); })("p-initial-columns", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_initial_columns_0_listener($event) { i0.ɵɵrestoreView(_r356); const ctx_r358 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r358.onColumnRestoreManager($event)); });
1448
+ i0.ɵɵlistener("p-visible-columns-change", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_visible_columns_change_0_listener($event) { i0.ɵɵrestoreView(_r344); const ctx_r343 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r343.onVisibleColumnsChange($event)); })("p-change-visible-columns", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_change_visible_columns_0_listener($event) { i0.ɵɵrestoreView(_r344); const ctx_r345 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r345.onChangeVisibleColumns($event)); })("p-initial-columns", function PoTableComponent_po_table_column_manager_28_Template_po_table_column_manager_p_initial_columns_0_listener($event) { i0.ɵɵrestoreView(_r344); const ctx_r346 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r346.onColumnRestoreManager($event)); });
1485
1449
  i0.ɵɵelementEnd();
1486
1450
  } if (rf & 2) {
1487
1451
  const ctx_r26 = i0.ɵɵnextContext();
@@ -1644,7 +1608,8 @@ export class PoTableComponent extends PoTableBaseComponent {
1644
1608
  const columnCount = this.mainColumns.length +
1645
1609
  (this.actions.length > 0 ? 1 : 0) +
1646
1610
  (this.selectable ? 1 : 0) +
1647
- (!this.hideDetail && this.columnMasterDetail !== undefined ? 1 : 0);
1611
+ (!this.hideDetail && this.columnMasterDetail !== undefined ? 1 : 0) +
1612
+ this.countExtraColumns();
1648
1613
  return columnCount || 1;
1649
1614
  }
1650
1615
  get columnCountForMasterDetail() {
@@ -2117,6 +2082,22 @@ export class PoTableComponent extends PoTableBaseComponent {
2117
2082
  return (this.tooltipText = columnLabel?.tooltip);
2118
2083
  }
2119
2084
  }
2085
+ countExtraColumns() {
2086
+ let extraColumns = 0;
2087
+ if (!this.columnMasterDetail && this.hasItems) {
2088
+ if ((this.hasMasterDetailColumn || this.hasRowTemplate) &&
2089
+ this.hasMainColumns &&
2090
+ !this.hasRowTemplateWithArrowDirectionRight) {
2091
+ extraColumns++;
2092
+ }
2093
+ if (this.hasRowTemplateWithArrowDirectionRight &&
2094
+ this.hasMainColumns &&
2095
+ (this.hasVisibleActions || this.hideColumnsManager)) {
2096
+ extraColumns++;
2097
+ }
2098
+ }
2099
+ return extraColumns;
2100
+ }
2120
2101
  debounceResize() {
2121
2102
  clearTimeout(this.timeoutResize);
2122
2103
  this.timeoutResize = setTimeout(() => {
@@ -2322,7 +2303,7 @@ export class PoTableComponent extends PoTableBaseComponent {
2322
2303
  }
2323
2304
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTableComponent, [{
2324
2305
  type: Component,
2325
- args: [{ selector: 'po-table', providers: [PoDateService], template: "<div class=\"po-table-actions\">\n <div\n #columnBatchActions\n *ngIf=\"hasValidColumns && itemsSelected.length > 0 && !hideBatchActions\"\n class=\"po-table-actions-batch-actions\"\n >\n <div [ngPlural]=\"itemsSelected.length\" class=\"po-table-actions-batch-actions__label\">\n <strong>\n <ng-template ngPluralCase=\"=0\">{{ literals.noItem }}</ng-template>\n <ng-template ngPluralCase=\"=1\">{{ literals.oneItem }}</ng-template>\n <ng-template ngPluralCase=\"other\">{{ itemsSelected.length }} {{ literals.multipleItems }}</ng-template>\n </strong>\n </div>\n\n <div class=\"po-table-actions-batch-actions__buttons\">\n <po-button\n p-icon=\"ICON_DELETE\"\n [p-danger]=\"true\"\n [p-disabled]=\"itemsSelected.length > 1 && serviceDeleteApi !== undefined\"\n [p-label]=\"literals.delete\"\n (p-click)=\"modalDelete.open()\"\n ></po-button>\n </div>\n </div>\n\n <div #columnManager *ngIf=\"hasValidColumns && !hideColumnsManager\" class=\"po-table-actions-column-manager\">\n <po-button\n #columnManagerTarget\n p-icon=\"ICON_SETTINGS\"\n p-kind=\"tertiary\"\n p-tooltip-position=\"left\"\n [p-aria-label]=\"literals.columnsManager\"\n [p-tooltip]=\"literals.columnsManager\"\n (p-click)=\"onOpenColumnManager()\"\n ></po-button>\n </div>\n\n <div *ngIf=\"!hideTableSearch && hasValidColumns\" class=\"po-table-search\">\n <po-search\n [p-items]=\"items\"\n [p-filter-keys]=\"filteredColumns\"\n [p-filter-type]=\"filterType\"\n (p-filtered-items-change)=\"onFilteredItemsChange($event)\"\n >\n </po-search>\n </div>\n</div>\n<po-container *ngIf=\"container; else tableContainerTemplate\" p-no-padding>\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n</po-container>\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-sticky]=\"loading\">\n <po-loading-overlay *ngIf=\"loading\" [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n <div *ngIf=\"height\" class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n <div *ngIf=\"virtualScroll\">\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n <div *ngIf=\"!virtualScroll\" class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!height\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"po-table-footer\" *ngIf=\"hasFooter\">\n <ng-container *ngFor=\"let column of subtitleColumns; trackBy: trackBy\">\n <po-table-subtitle-footer [p-literals]=\"literals\" [p-subtitles]=\"column.subtitles\"> </po-table-subtitle-footer>\n </ng-container>\n </div>\n</ng-template>\n\n<!-- Show More Button -->\n<div\n *ngIf=\"!infiniteScroll\"\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n>\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n</div>\n\n<!-- Table default-->\n<ng-template #tableTemplate>\n <table\n #tableScrollable\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead [class.po-table-header-sticky]=\"height > 0 && !virtualScroll\">\n <tr\n [ngClass]=\"!height ? { 'no-hover': hideSelectAll, 'po-table-column-drag': this.isDraggable } : ''\"\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <th\n *ngIf=\"hasSelectableColumn\"\n [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\"\n class=\"po-table-column-selectable\"\n >\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n #columnActionLeft\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <ng-container\n *ngIf=\"this.isDraggable || hasSomeFixed(); then tableDefaultThDragDrop; else tableDefaultThDefault\"\n >\n </ng-container>\n <ng-template #tableDefaultThDragDrop>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngIf=\"this.isDraggable && !column.fixed\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_DRAG\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n cdkDragHandle\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"18\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"18\" r=\"2\" fill=\"black\" />\n </svg>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n <ng-template #tableDefaultThDefault>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n </tr>\n </thead>\n\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *ngFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\">\n <tr class=\"po-table-row\" [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\">\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n</ng-template>\n\n<!-- Table with virtual scroll -->\n<ng-template #tableVirtualScrollTemplate>\n <cdk-virtual-scroll-viewport\n #tableVirtualScroll\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableContainer\"\n [minBufferPx]=\"heightTableContainer < 100 ? 100 : heightTableContainer\"\n [maxBufferPx]=\"heightTableContainer < 200 ? 200 : heightTableContainer\"\n >\n <table\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead class=\"po-table-header-sticky\" [style.top]=\"inverseOfTranslation\">\n <tr\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <th\n *ngIf=\"hasSelectableColumn\"\n [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\"\n class=\"po-table-column-selectable\"\n >\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n #columnActionLeft\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <ng-container\n *ngIf=\"\n this.isDraggable || hasSomeFixed();\n then tableVirtualScrollThDragDrop;\n else tableVirtualScrollThDefault\n \"\n >\n </ng-container>\n <ng-template #tableVirtualScrollThDragDrop>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngIf=\"this.isDraggable && !column.fixed\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_DRAG\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n cdkDragHandle\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"18\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"18\" r=\"2\" fill=\"black\" />\n </svg>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n <ng-template #tableVirtualScrollThDefault>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column example-box\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n </tr>\n </thead>\n\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody\n class=\"po-table-group-row\"\n *cdkVirtualFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\"\n >\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n <po-icon\n *ngIf=\"(containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)\"\n [p-icon]=\"row.$showDetail ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\"\n class=\"po-clickable\"\n >\n </po-icon>\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <po-radio [name]=\"idRadio\" [p-checked]=\"row.$selected\" (p-change-selected)=\"selectRow(row)\"></po-radio>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n [p-checkboxValue]=\"row.$selected === null ? 'mixed' : row.$selected\"\n ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n\n <span\n *ngIf=\"sort && column.sortable !== false\"\n [class.po-table-header-icon-unselected]=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\"\n [class.po-table-header-icon-descending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\n \"\n [class.po-table-header-icon-ascending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\n \"\n >\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\">\n <po-icon *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.2929 15.2929L17 16.5858L17 10C17 9.44772 16.5523 9 16 9C15.4477 9 15 9.44772 15 10L15 16.5858L13.7071 15.2929C13.3166 14.9024 12.6834 14.9024 12.2929 15.2929C11.9024 15.6834 11.9024 16.3166 12.2929 16.7071L15.2929 19.7071C15.6834 20.0976 16.3166 20.0976 16.7071 19.7071L19.7071 16.7071C20.0976 16.3166 20.0976 15.6834 19.7071 15.2929C19.3166 14.9024 18.6834 14.9024 18.2929 15.2929ZM5.70716 8.7071L7.00006 7.4142L7.00003 14C7.00002 14.5523 7.44774 15 8.00002 15C8.55231 15 9.00002 14.5523 9.00003 14L9.00006 7.41418L10.2929 8.70707C10.6835 9.09759 11.3166 9.09758 11.7072 8.70706C12.0977 8.31653 12.0977 7.68336 11.7072 7.29284L8.70718 4.29286C8.31665 3.90234 7.68349 3.90235 7.29296 4.29287L4.29295 7.29289C3.90242 7.68342 3.90242 8.31658 4.29294 8.70711C4.68347 9.09763 5.31663 9.09762 5.70716 8.7071Z\"\n fill=\"#1D1D30\"\n />\n </svg>\n </ng-container>\n\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\">\n <po-icon *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT_ASC\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11 9.41421L9.70711 10.7071C9.31658 11.0976 8.68342 11.0976 8.29289 10.7071C7.90237 10.3166 7.90237 9.68342 8.29289 9.29289L11.2929 6.29289C11.6834 5.90237 12.3166 5.90237 12.7071 6.29289L15.7071 9.29289C16.0976 9.68342 16.0976 10.3166 15.7071 10.7071C15.3166 11.0976 14.6834 11.0976 14.2929 10.7071L13 9.41421V16C13 16.5523 12.5523 17 12 17C11.4477 17 11 16.5523 11 16V9.41421Z\"\n fill=\"black\"\n />\n </svg>\n </ng-container>\n\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT_DESC\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M9.70711 13.2929L11 14.5858V7C11 6.44772 11.4477 6 12 6C12.5523 6 13 6.44772 13 7V14.5858L14.2929 13.2929C14.6834 12.9024 15.3166 12.9024 15.7071 13.2929C16.0976 13.6834 16.0976 14.3166 15.7071 14.7071L12.7071 17.7071C12.3166 18.0976 11.6834 18.0976 11.2929 17.7071L8.29289 14.7071C7.90237 14.3166 7.90237 13.6834 8.29289 13.2929C8.68342 12.9024 9.31658 12.9024 9.70711 13.2929Z\"\n fill=\"black\"\n />\n </svg>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #noColumnsWithHeight>\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"headerWidth\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n</ng-template>\n\n<ng-template #noColumnsWithoutHeight>\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <td\n *ngIf=\"isSingleAction\"\n class=\"po-table-column po-table-column-single-action\"\n [style.width.px]=\"height && actionRight ? getWidthColumnManager() : ''\"\n [style.max-width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n [style.width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n >\n <div\n *ngIf=\"firstAction.visible !== false\"\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n <po-icon *ngIf=\"firstAction.icon\" class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n {{ firstAction.label }}\n </div>\n </td>\n\n <td *ngIf=\"visibleActions.length > 1\" class=\"po-table-column-actions\">\n <div #popupTarget class=\"po-clickable\" (click)=\"togglePopup(row, popupTarget)\">\n <po-icon p-icon=\"ICON_MORE\"></po-icon>\n </div>\n </td>\n</ng-template>\n\n<po-table-column-manager\n *ngIf=\"!hideColumnsManager\"\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n>\n</po-table-column-manager>\n\n<po-modal\n #modalDelete\n [p-title]=\"literals.delete\"\n [p-primary-action]=\"confirm\"\n [p-secondary-action]=\"close\"\n [p-click-out]=\"true\"\n>\n <p class=\"po-font-text-large\">{{ literals.bodyDelete }}</p>\n</po-modal>\n" }]
2306
+ args: [{ selector: 'po-table', providers: [PoDateService], template: "<div class=\"po-table-actions\">\n <div\n #columnBatchActions\n *ngIf=\"hasValidColumns && itemsSelected.length > 0 && !hideBatchActions\"\n class=\"po-table-actions-batch-actions\"\n >\n <div [ngPlural]=\"itemsSelected.length\" class=\"po-table-actions-batch-actions__label\">\n <strong>\n <ng-template ngPluralCase=\"=0\">{{ literals.noItem }}</ng-template>\n <ng-template ngPluralCase=\"=1\">{{ literals.oneItem }}</ng-template>\n <ng-template ngPluralCase=\"other\">{{ itemsSelected.length }} {{ literals.multipleItems }}</ng-template>\n </strong>\n </div>\n\n <div class=\"po-table-actions-batch-actions__buttons\">\n <po-button\n p-icon=\"ICON_DELETE\"\n [p-danger]=\"true\"\n [p-disabled]=\"itemsSelected.length > 1 && serviceDeleteApi !== undefined\"\n [p-label]=\"literals.delete\"\n (p-click)=\"modalDelete.open()\"\n ></po-button>\n </div>\n </div>\n\n <div #columnManager *ngIf=\"hasValidColumns && !hideColumnsManager\" class=\"po-table-actions-column-manager\">\n <po-button\n #columnManagerTarget\n p-icon=\"ICON_SETTINGS\"\n p-kind=\"tertiary\"\n p-tooltip-position=\"left\"\n [p-aria-label]=\"literals.columnsManager\"\n [p-tooltip]=\"literals.columnsManager\"\n (p-click)=\"onOpenColumnManager()\"\n ></po-button>\n </div>\n\n <div *ngIf=\"!hideTableSearch && hasValidColumns\" class=\"po-table-search\">\n <po-search\n [p-items]=\"items\"\n [p-filter-keys]=\"filteredColumns\"\n [p-filter-type]=\"filterType\"\n (p-filtered-items-change)=\"onFilteredItemsChange($event)\"\n >\n </po-search>\n </div>\n</div>\n<po-container *ngIf=\"container; else tableContainerTemplate\" p-no-padding>\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n</po-container>\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-sticky]=\"loading\">\n <po-loading-overlay *ngIf=\"loading\" [p-text]=\"literals.loadingData\" [p-size]=\"sizeLoading\"></po-loading-overlay>\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n <div *ngIf=\"height\" class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableTbody [class.po-table-container-fixed-inner]=\"virtualScroll\">\n <div *ngIf=\"virtualScroll\">\n <ng-container *ngTemplateOutlet=\"tableVirtualScrollTemplate\"></ng-container>\n </div>\n <div *ngIf=\"!virtualScroll\" class=\"po-table-container-overflow\" [style.height.px]=\"heightTableContainer\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!height\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"po-table-footer\" *ngIf=\"hasFooter\">\n <ng-container *ngFor=\"let column of subtitleColumns; trackBy: trackBy\">\n <po-table-subtitle-footer [p-literals]=\"literals\" [p-subtitles]=\"column.subtitles\"> </po-table-subtitle-footer>\n </ng-container>\n </div>\n</ng-template>\n\n<!-- Show More Button -->\n<div\n *ngIf=\"!infiniteScroll\"\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n>\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n</div>\n\n<!-- Table default-->\n<ng-template #tableTemplate>\n <table\n #tableScrollable\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead [class.po-table-header-sticky]=\"height > 0 && !virtualScroll\">\n <tr\n [ngClass]=\"!height ? { 'no-hover': hideSelectAll, 'po-table-column-drag': this.isDraggable } : ''\"\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <th\n *ngIf=\"hasSelectableColumn\"\n [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\"\n class=\"po-table-column-selectable\"\n >\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n #columnActionLeft\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <ng-container\n *ngIf=\"this.isDraggable || hasSomeFixed(); then tableDefaultThDragDrop; else tableDefaultThDefault\"\n >\n </ng-container>\n <ng-template #tableDefaultThDragDrop>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngIf=\"this.isDraggable && !column.fixed\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_DRAG\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n cdkDragHandle\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"18\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"18\" r=\"2\" fill=\"black\" />\n </svg>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n <ng-template #tableDefaultThDefault>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{\n 'width':\n height > 0 && !virtualScroll ? (!hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto') : ''\n }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager) && hasMainColumns\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n </tr>\n </thead>\n\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *ngFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\">\n <tr class=\"po-table-row\" [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\">\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table ou pela diretiva -->\n <td\n *ngIf=\"\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n \"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n</ng-template>\n\n<!-- Table with virtual scroll -->\n<ng-template #tableVirtualScrollTemplate>\n <cdk-virtual-scroll-viewport\n #tableVirtualScroll\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableContainer\"\n [minBufferPx]=\"heightTableContainer < 100 ? 100 : heightTableContainer\"\n [maxBufferPx]=\"heightTableContainer < 200 ? 200 : heightTableContainer\"\n >\n <table\n class=\"po-table\"\n [ngClass]=\"{\n 'po-table-interactive': selectable || sort,\n 'po-table-selectable': selectable,\n 'po-table-striped': striped,\n 'po-table-data-fixed-columns': applyFixedColumns(),\n 'po-table-text-wrap-enabled': textWrap\n }\"\n [attr.p-spacing]=\"spacing\"\n >\n <thead class=\"po-table-header-sticky\" [style.top]=\"inverseOfTranslation\">\n <tr\n [class.po-table-header]=\"!height\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n <th\n *ngIf=\"hasSelectableColumn\"\n [style.pointer-events]=\"hideSelectAll ? 'none' : 'auto'\"\n class=\"po-table-column-selectable\"\n >\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (p-change)=\"selectAllRows()\"\n [p-checkboxValue]=\"selectAll === null ? 'mixed' : selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"\n (hasMasterDetailColumn || hasRowTemplate) && hasMainColumns && !hasRowTemplateWithArrowDirectionRight\n \"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n #columnActionLeft\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <ng-container\n *ngIf=\"\n this.isDraggable || hasSomeFixed();\n then tableVirtualScrollThDragDrop;\n else tableVirtualScrollThDefault\n \"\n >\n </ng-container>\n <ng-template #tableVirtualScrollThDragDrop>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n [class.po-table-column-drag-box]=\"this.isDraggable\"\n (click)=\"sortColumn(column)\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n [cdkDragDisabled]=\"column.fixed ? 'true' : 'false'\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngIf=\"this.isDraggable && !column.fixed\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_DRAG\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n cdkDragHandle\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"9\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"6\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"12\" r=\"2\" fill=\"black\" />\n <circle cx=\"9\" cy=\"18\" r=\"2\" fill=\"black\" />\n <circle cx=\"15\" cy=\"18\" r=\"2\" fill=\"black\" />\n </svg>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n <ng-template #tableVirtualScrollThDefault>\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n class=\"po-table-header-ellipsis p-element po-frozen-column example-box\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [attr.data-po-table-column-name]=\"column.label || (column.property | titlecase) | lowercase\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [ngClass]=\"{\n 'po-table-header-sorted':\n sort &&\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) &&\n (sortedColumn.ascending || !sortedColumn.ascending)\n }\"\n [ngStyle]=\"{ 'width': !hasItems ? '100%' : applyFixedColumns() ? column.width : 'auto' }\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n [pFrozenColumn]=\"column.fixed\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n </ng-template>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && hasMainColumns && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n </tr>\n </thead>\n\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody\n class=\"po-table-group-row\"\n *cdkVirtualFor=\"let row of filteredItems; let rowIndex = index; trackBy: trackBy\"\n >\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table ou pela diretiva -->\n <td\n *ngIf=\"\n (columnMasterDetail && !hideDetail && !hasRowTemplate) ||\n (hasRowTemplate && !hasRowTemplateWithArrowDirectionRight)\n \"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n [pFrozenColumn]=\"column.fixed\"\n class=\"p-element po-frozen-column\"\n (click)=\"hasSelectableRow() ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell po-table-body-ellipsis notranslate\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format : 'symbol' : '1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n [p-parent-row]=\"row\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n <po-icon\n *ngIf=\"(containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)\"\n [p-icon]=\"row.$showDetail ? 'ICON_ARROW_UP' : 'ICON_ARROW_DOWN'\"\n class=\"po-clickable\"\n >\n </po-icon>\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <po-radio [name]=\"idRadio\" [p-checked]=\"row.$selected\" (p-change-selected)=\"selectRow(row)\"></po-radio>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n [p-checkboxValue]=\"row.$selected === null ? 'mixed' : row.$selected\"\n ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n [p-append-in-body]=\"true\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n\n <span\n *ngIf=\"sort && column.sortable !== false\"\n [class.po-table-header-icon-unselected]=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\"\n [class.po-table-header-icon-descending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\n \"\n [class.po-table-header-icon-ascending]=\"\n JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\n \"\n >\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) !== JSON.stringify(column)\">\n <po-icon *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18.2929 15.2929L17 16.5858L17 10C17 9.44772 16.5523 9 16 9C15.4477 9 15 9.44772 15 10L15 16.5858L13.7071 15.2929C13.3166 14.9024 12.6834 14.9024 12.2929 15.2929C11.9024 15.6834 11.9024 16.3166 12.2929 16.7071L15.2929 19.7071C15.6834 20.0976 16.3166 20.0976 16.7071 19.7071L19.7071 16.7071C20.0976 16.3166 20.0976 15.6834 19.7071 15.2929C19.3166 14.9024 18.6834 14.9024 18.2929 15.2929ZM5.70716 8.7071L7.00006 7.4142L7.00003 14C7.00002 14.5523 7.44774 15 8.00002 15C8.55231 15 9.00002 14.5523 9.00003 14L9.00006 7.41418L10.2929 8.70707C10.6835 9.09759 11.3166 9.09758 11.7072 8.70706C12.0977 8.31653 12.0977 7.68336 11.7072 7.29284L8.70718 4.29286C8.31665 3.90234 7.68349 3.90235 7.29296 4.29287L4.29295 7.29289C3.90242 7.68342 3.90242 8.31658 4.29294 8.70711C4.68347 9.09763 5.31663 9.09762 5.70716 8.7071Z\"\n fill=\"#1D1D30\"\n />\n </svg>\n </ng-container>\n\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && sortedColumn.ascending\">\n <po-icon *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT_ASC\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11 9.41421L9.70711 10.7071C9.31658 11.0976 8.68342 11.0976 8.29289 10.7071C7.90237 10.3166 7.90237 9.68342 8.29289 9.29289L11.2929 6.29289C11.6834 5.90237 12.3166 5.90237 12.7071 6.29289L15.7071 9.29289C16.0976 9.68342 16.0976 10.3166 15.7071 10.7071C15.3166 11.0976 14.6834 11.0976 14.2929 10.7071L13 9.41421V16C13 16.5523 12.5523 17 12 17C11.4477 17 11 16.5523 11 16V9.41421Z\"\n fill=\"black\"\n />\n </svg>\n </ng-container>\n\n <ng-container *ngIf=\"JSON.stringify(sortedColumn?.property) === JSON.stringify(column) && !sortedColumn.ascending\">\n <po-icon cdkDragHandle *ngIf=\"iconNameLib === 'PhosphorIcon'\" p-icon=\"ICON_SORT_DESC\"></po-icon>\n <svg\n *ngIf=\"iconNameLib === 'PoIcon'\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M9.70711 13.2929L11 14.5858V7C11 6.44772 11.4477 6 12 6C12.5523 6 13 6.44772 13 7V14.5858L14.2929 13.2929C14.6834 12.9024 15.3166 12.9024 15.7071 13.2929C16.0976 13.6834 16.0976 14.3166 15.7071 14.7071L12.7071 17.7071C12.3166 18.0976 11.6834 18.0976 11.2929 17.7071L8.29289 14.7071C7.90237 14.3166 7.90237 13.6834 8.29289 13.2929C8.68342 12.9024 9.31658 12.9024 9.70711 13.2929Z\"\n fill=\"black\"\n />\n </svg>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #noColumnsWithHeight>\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"headerWidth\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n</ng-template>\n\n<ng-template #noColumnsWithoutHeight>\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <td\n *ngIf=\"isSingleAction\"\n class=\"po-table-column po-table-column-single-action\"\n [style.width.px]=\"height && actionRight ? getWidthColumnManager() : ''\"\n [style.max-width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n [style.width.px]=\"height && !actionRight ? getColumnWidthActionsLeft() : ''\"\n >\n <div\n *ngIf=\"firstAction.visible !== false\"\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n <po-icon *ngIf=\"firstAction.icon\" class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n {{ firstAction.label }}\n </div>\n </td>\n\n <td *ngIf=\"visibleActions.length > 1\" class=\"po-table-column-actions\">\n <div #popupTarget class=\"po-clickable\" (click)=\"togglePopup(row, popupTarget)\">\n <po-icon p-icon=\"ICON_MORE\"></po-icon>\n </div>\n </td>\n</ng-template>\n\n<po-table-column-manager\n *ngIf=\"!hideColumnsManager\"\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n [p-hide-action-fixed-columns]=\"hideActionFixedColumns\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n>\n</po-table-column-manager>\n\n<po-modal\n #modalDelete\n [p-title]=\"literals.delete\"\n [p-primary-action]=\"confirm\"\n [p-secondary-action]=\"close\"\n [p-click-out]=\"true\"\n>\n <p class=\"po-font-text-large\">{{ literals.bodyDelete }}</p>\n</po-modal>\n" }]
2326
2307
  }], () => [{ type: i1.PoDateService }, { type: i0.IterableDiffers }, { type: i0.Renderer2 }, { type: i2.PoLanguageService }, { type: i0.ChangeDetectorRef }, { type: i3.DecimalPipe }, { type: i4.PoTableService }, { type: undefined, decorators: [{
2327
2308
  type: Optional
2328
2309
  }, {
@@ -2393,4 +2374,4 @@ export class PoTableComponent extends PoTableBaseComponent {
2393
2374
  args: ['columnManagerTargetFixed']
2394
2375
  }] }); })();
2395
2376
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoTableComponent, { className: "PoTableComponent", filePath: "lib/components/po-table/po-table.component.ts", lineNumber: 107 }); })();
2396
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFVBQVUsRUFDVixNQUFNLEVBSU4sUUFBUSxFQUlSLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwr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dWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLW5vdGlmaWNhdGlvbi9wby1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uLCBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbW9kYWwnO1xuaW1wb3J0IHsgUG9Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBvcHVwL3BvLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9QYWdlU2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi9wby1wYWdlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uIH0gZnJvbSAnLi9lbnVtcy9wby10YWJsZS1yb3ctdGVtcGxhdGUtYXJyb3ctZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQmFzZUNvbXBvbmVudCwgUXVlcnlQYXJhbXNUeXBlIH0gZnJvbSAnLi9wby10YWJsZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1yb3ctdGVtcGxhdGUvcG8tdGFibGUtcm93LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlU3VidGl0bGVDb2x1bW4gfSBmcm9tICcuL3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlci9wby10YWJsZS1zdWJ0aXRsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IElDT05TX0RJQ1RJT05BUlksIFBvSWNvbkRpY3Rpb25hcnkgfSBmcm9tICcuLi9wby1pY29uJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gVGFibGUgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYmFzaWMvc2FtcGxlLXBvLXRhYmxlLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtbGFic1wiIHRpdGxlPVwiUE8gVGFibGUgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS13aXRoLWFwaVwiIHRpdGxlPVwiUE8gVGFibGUgdXNpbmcgQVBJXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpL3NhbXBsZS1wby10YWJsZS13aXRoLWFwaS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLXRyYW5zcG9ydFwiIHRpdGxlPVwiUE8gVGFibGUgLSBUcmFuc3BvcnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYWlyZmFyZVwiIHRpdGxlPVwiUE8gVGFibGUgLSBBaXJmYXJlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWNvbXBvbmVudHNcIiB0aXRsZT1cIlBPIFRhYmxlIC0gUG8gRmllbGQgQ29tcG9uZW50c1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5lbnVtLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LmNzc1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWhlcm9lc1wiIHRpdGxlPVwiUE8gVGFibGUgLSBIZXJvZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWhlcm9lcy9zYW1wbGUtcG8tdGFibGUtaGVyb2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtZHJhZ2dhYmxlXCIgdGl0bGU9XCJQTyBUYWJsZSBEcmFnIGFuZCBEcm9wXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvRGF0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBvVGFibGVDb21wb25lbnQgZXh0ZW5kcyBQb1RhYmxlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlUm93VGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlUm93VGVtcGxhdGU6IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNlbGxUZW1wbGF0ZTogUG9UYWJsZUNlbGxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSkgdGFibGVDb2x1bW5UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBWaWV3Q2hpbGQoJ25vQ29sdW1uc0hlYWRlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBub0NvbHVtbnNIZWFkZXI7XG4gIEBWaWV3Q2hpbGQoJ3BvcHVwJykgcG9Qb3B1cENvbXBvbmVudDogUG9Qb3B1cENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChQb01vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBtb2RhbERlbGV0ZTogUG9Nb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFibGVGb290ZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVGb290ZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZVdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVXcmFwcGVyRWxlbWVudDtcblxuICBAVmlld0NoaWxkKCd0YWJsZVRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlVGVtcGxhdGU7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlVmlydHVhbFNjcm9sbCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVZpcnR1YWxTY3JvbGw7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlU2Nyb2xsYWJsZScsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVNjcm9sbGFibGU7XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5NYW5hZ2VyO1xuICBAVmlld0NoaWxkKCdjb2x1bW5CYXRjaEFjdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQmF0Y2hBY3Rpb25zO1xuICBAVmlld0NoaWxkKCdjb2x1bW5BY3Rpb25MZWZ0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbkFjdGlvbkxlZnQ7XG5cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNJY29uRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNFbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVySW5wdXQnKSBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9TZWFyY2hJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHBvU2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgcG9Ob3RpZmljYXRpb24gPSBpbmplY3QoUG9Ob3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICBoZWlnaHRUYWJsZUNvbnRhaW5lcjogbnVtYmVyO1xuICBoZWlnaHRUYWJsZVZpcnR1YWw6IG51bWJlcjtcbiAgcG9wdXBUYXJnZXQ7XG4gIHRhYmxlT3BhY2l0eTogbnVtYmVyID0gMDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcbiAgaXRlbVNpemU6IG51bWJlciA9IDQ4O1xuICBsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZDogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHRhZ0NvbG9yOiBzdHJpbmc7XG4gIGlkUmFkaW86IHN0cmluZztcbiAgaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gIEpTT046IEpTT047XG4gIG5ld09yZGVyQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHNpemVMb2FkaW5nOiBzdHJpbmcgPSAnc20nO1xuICBoZWFkZXJXaWR0aDogbnVtYmVyO1xuXG4gIGNsb3NlOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgIH0sXG4gICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMuY2FuY2VsLFxuICAgIGRhbmdlcjogdHJ1ZVxuICB9O1xuXG4gIGNvbmZpcm06IFBvTW9kYWxBY3Rpb24gPSB7XG4gICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5kZWxldGVcbiAgfTtcblxuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX2ljb25Ub2tlbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSBkaWZmZXI7XG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0O1xuICBwcml2YXRlIGhlYWRlckhlaWdodDtcbiAgcHJpdmF0ZSB0aW1lb3V0UmVzaXplO1xuICBwcml2YXRlIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgc2Nyb2xsRXZlbnQkOiBPYnNlcnZhYmxlPGFueT47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25TZXJ2aWNlOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJUYXJnZXQnKSBzZXQgY29sdW1uTWFuYWdlclRhcmdldCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0O1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlclRhcmdldEZpeGVkJykgc2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldEZpeGVkO1xuICB9XG5cbiAgZ2V0IGljb25OYW1lTGliKCkge1xuICAgIHJldHVybiB0aGlzLl9pY29uVG9rZW4uTkFNRV9MSUI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwb0RhdGU6IFBvRGF0ZVNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgZGVmYXVsdFNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUNPTlNfRElDVElPTkFSWSkgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlLCBwb0xhbmd1YWdlU2VydmljZSwgZGVmYXVsdFNlcnZpY2UpO1xuICAgIHRoaXMuSlNPTiA9IEpTT047XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcblxuICAgIC8vIFRPRE86ICM1NTUwIGFvIHJlbW92ZXIgZXN0ZSBsaXN0ZW5lciwgbm8gcG9ydGFsLCBxdWFuZG8gYXMgY29sdW5hcyBmb3JlbSBmaXhhcyBuw6NvIHNvZnJlbVxuICAgIC8vIGFsdGVyYcOnw6NvIGRlIGxhcmd1cmEsIHBvaXMgbyBuZ0RvQ2hlY2sgbsOjbyDDqSBleGVjdXRhZG8uXG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsICgpID0+IHt9KTtcblxuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faWNvblRva2VuID0gdmFsdWUgPz8gUG9JY29uRGljdGlvbmFyeTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGU/LnRhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbiA9PT0gUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24uUmlnaHQ7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnQoKSB7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPVxuICAgICAgdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggK1xuICAgICAgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICtcbiAgICAgICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgK1xuICAgICAgKCF0aGlzLmhpZGVEZXRhaWwgJiYgdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgIT09IHVuZGVmaW5lZCA/IDEgOiAwKTtcblxuICAgIHJldHVybiBjb2x1bW5Db3VudCB8fCAxO1xuICB9XG5cbiAgZ2V0IGNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsKCkge1xuICAgIC8vIGNhc28gdGl2ZXIgYcOnw7VlcyBzZXLDoSB1dGlsaXphZG8gYSBzdWEgY29sdW5hIHBhcmEgZXhpYmlyIG8gY29sdW1uTWFuYWdlclxuICAgIHJldHVybiB0aGlzLm1haW5Db2x1bW5zLmxlbmd0aCArIDEgKyAodGhpcy5hY3Rpb25zLmxlbmd0aCA+IDAgPyAxIDogMCkgKyAodGhpcy5zZWxlY3RhYmxlID8gMSA6IDApO1xuICB9XG5cbiAgZ2V0IGRldGFpbEhpZGVTZWxlY3QoKSB7XG4gICAgY29uc3QgbWFzdGVyRGV0YWlsID0gdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWw7XG4gICAgcmV0dXJuIG1hc3RlckRldGFpbCAmJiBtYXN0ZXJEZXRhaWwuZGV0YWlsID8gbWFzdGVyRGV0YWlsLmRldGFpbC5oaWRlU2VsZWN0IDogZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgZmlyc3RBY3Rpb24oKTogUG9UYWJsZUFjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMgJiYgdGhpcy52aXNpYmxlQWN0aW9uc1swXTtcbiAgfVxuXG4gIGdldCBoYXNGb290ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNWaXNpYmxlU3VidGl0bGVDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc01hc3RlckRldGFpbENvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5oYXNNYWluQ29sdW1ucyAmJiB0aGlzLmhhc0l0ZW1zICYmICF0aGlzLmhpZGVEZXRhaWwgJiYgISEodGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgfHwgdGhpcy5oYXNSb3dUZW1wbGF0ZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGhhc1Jvd1RlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVSb3dUZW1wbGF0ZTtcbiAgfVxuXG4gIGdldCBoYXNTZWxlY3RhYmxlQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5oYXNJdGVtcyAmJiB0aGlzLmhhc01haW5Db2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc1ZhbGlkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gISF0aGlzLnZhbGlkQ29sdW1ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZUNvbHVtbnMuc29tZShjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgIT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBpc1NpbmdsZUFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggPT09IDE7XG4gIH1cblxuICBnZXQgaXNEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ2dhYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnZlcnNlT2ZUcmFuc2xhdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy52aWV3UG9ydCB8fCAhdGhpcy52aWV3UG9ydFsnX3JlbmRlcmVkQ29udGVudE9mZnNldCddKSB7XG4gICAgICByZXR1cm4gJy0wcHgnO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMudmlld1BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXTtcblxuICAgIHJldHVybiBgLSR7b2Zmc2V0fXB4YDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaWRSYWRpbyA9IGBwby1yYWRpby0ke3V1aWQoKX1gO1xuICB9XG5cbiAgY2hhbmdlSGVhZGVyV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMubm9Db2x1bW5zSGVhZGVyKSB7XG4gICAgICB0aGlzLmhlYWRlcldpZHRoID0gdGhpcy5ub0NvbHVtbnNIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlSGVhZGVyV2lkdGgoKTtcbiAgICB0aGlzLmNoYW5nZVNpemVMb2FkaW5nKCk7XG4gICAgdGhpcy5hcHBseUZpeGVkQ29sdW1ucygpO1xuICB9XG5cbiAgc2hvd01vcmVJbmZpbml0ZVNjcm9sbCh7IHRhcmdldCB9KTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB0YXJnZXQub2Zmc2V0SGVpZ2h0ICsgdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICBpZiAoIXRoaXMuc2hvd01vcmVEaXNhYmxlZCAmJiBzY3JvbGxQb3NpdGlvbiA+PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0ICogKHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZSAvIDExMCkpIHtcbiAgICAgIHRoaXMub25TaG93TW9yZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICB0aGlzLmFwcGx5Rml4ZWRDb2x1bW5zKCk7XG4gICAgdGhpcy5jaGVja0NoYW5nZXNJdGVtcygpO1xuICAgIHRoaXMudmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKTtcblxuICAgIC8vIFBlcm1pdGUgcXVlIG9zIGNhYmXDp2FsaG9zIHNlamFtIGNhbGN1bGFkb3MgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyRWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLmNoZWNrSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciByZWFsaXphciBidXNjYSBubyBzZXJ2acOnbyBkZSBkYWRvcyBwb2RlbmRvIGluZm9ybWFyIGZpbHRyb3MgZSBjb20gbyByZXRvcm5vLCBhdHVhbGl6YSBhIHRhYmVsYS5cbiAgICpcbiAgICogQ2FzbyBuw6NvIHNlamEgaW5mb3JtYWRvIHBhcsOibWV0cm8sIG5hZGEgc2Vyw6EgYWRpY2lvbmFkbyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTBcbiAgICogYGBgXG4gICAqID4gT2JzOiBvcyBwYXLDom1ldHJvcyBgcGFnZWAgZSBgcGFnZVNpemVgIHNlbXByZSBzZXLDo28gY2hhbWFkb3MgaW5kZXBlbmRlbnRlIGRlIHNlciBlbnZpYWRvcyBvdXRyb3MgcGFyw6JtZXRyb3MuXG4gICAqXG4gICAqIENhc28gc2VqYW0gaW5mb3JtYWRvcyBvcyBwYXLDom1ldHJvcyBgeyBuYW1lOiAnSk9ITicsIGFnZTogJzIzJyB9YCwgdG9kb3Mgc2Vyw6NvIGFkaWNpb25hZG9zIGFvIEdFVCwgY29uZm9ybWUgYWJhaXhvOlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMCZuYW1lPUpPSE4mYWdlPTIzXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHF1ZXJ5UGFyYW1zIEZvcm1hdG8gZG8gb2JqZXRvIGEgc2VyIGVudmlhZG8uXG4gICAqID4gUG9kZSBzZXIgdXRpbGl6YWRhIHF1YWxxdWVyIHN0cmluZyBjb21vIGtleSwgZSBxdWFscXVlciBzdHJpbmcgb3UgbnVtYmVyIGNvbW8gdmFsdWUuXG4gICAqL1xuICBhcHBseUZpbHRlcnMocXVlcnlQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IFF1ZXJ5UGFyYW1zVHlwZSB9KSB7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSBjb2x1bW5zIHBvc3N1ZW0gYSBwcm9wcmllZGFkZSB3aWR0aC5cbiAgICovXG4gIGFwcGx5Rml4ZWRDb2x1bW5zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jb2x1bW5zLnNvbWUoY29sdW1uID0+ICFjb2x1bW4ud2lkdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGNvbGFwc2EgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGNvbGFwc2FkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgY29sbGFwc2Uocm93SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3dJbmRleCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGV4cGFuZGUgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGV4cGFuZGlkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgZXhwYW5kKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRTZWxlY3RlZFJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIG7Do28gZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIGdldFVuc2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgYXMgbGluaGFzIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgdW5zZWxlY3RSb3dzKCkge1xuICAgIGNvbnN0IGNvbHVtbkRldGFpbCA9IHRoaXMubmFtZUNvbHVtbkRldGFpbDtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGRldGFpbEl0ZW1zID0gY29sdW1uRGV0YWlsID8gaXRlbVtjb2x1bW5EZXRhaWxdIDogbnVsbDtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGV0YWlsSXRlbXMpKSB7XG4gICAgICAgIGRldGFpbEl0ZW1zLmZvckVhY2goZGV0YWlsSXRlbSA9PiB7XG4gICAgICAgICAgZGV0YWlsSXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIHJldHVybiBjb2x1bW4uZGlzYWJsZWQgPyBjb2x1bW4uZGlzYWJsZWQocm93KSA6IGZhbHNlO1xuICB9XG5cbiAgY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdICYmIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdLmxlbmd0aDtcbiAgfVxuXG4gIGV4ZWN1dGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICghcm93LmRpc2FibGVkICYmICF0aGlzLnZhbGlkYXRlVGFibGVBY3Rpb24ocm93LCB0YWJsZUFjdGlvbikpIHtcbiAgICAgIHRhYmxlQWN0aW9uLmFjdGlvbihyb3cpO1xuICAgICAgdGhpcy50b2dnbGVSb3dBY3Rpb24ocm93KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgdW1hIGxpbmhhIHF1ZSBlc3TDoSBzZWxlY2lvbmFkYS5cbiAgICovXG4gIHVuc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWNpb25hIHVtYSBsaW5oYSBkbyAncG8tdGFibGUnLlxuICAgKi9cbiAgc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLml0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcGVsYSBleGNsdXPDo28gZGUgaXRlbnMgZW0gbG90ZS5cbiAgICogQ2FzbyBhIHRhYmVsYSBlc3RlamEgZXhlY3V0YW5kbyBhIHByb3ByaWVkYWRlIGBwLXNlcnZpY2UtZGVsZXRlYCwgc2Vyw6EgbmVjZXNzw6FyaW8gZXhjbHVpciAxIGl0ZW0gcG9yIHZlei5cbiAgICpcbiAgICogQW8gdXRpbGl6YXIgYHAtc2VydmljZS1kZWxldGVgIG1hcyBzZW0gYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlLWFwaWAsIHNlcsOhIHJlc3BvbnNhYmlsaWRhZGUgZG8gdXN1w6FyaW8gbyB0cmF0YW1lbnRvXG4gICAqIGFww7NzIGEgcmVxdWlzacOnw6NvIERFTEVURSBzZXIgZXhlY3V0YWRhLlxuICAgKlxuICAgKiBDYXNvIGEgdGFiZWxhIHV0aWxpemUgYHAtaGVpZ2h0YCBlIGVzdGVqYSBzZW0gc2VydmnDp28sIMOpIG5lY2Vzc8OhcmlvIGEgcmVhdHJpYnVpw6fDo28gZG9zIGl0ZW5zIHV0aWxpemFuZG8gbyBldmVudG8gYChwLWRlbGV0ZS1pdGVtcylgLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqPHBvLXRhYmxlXG4gICAqICAocC1kZWxldGUtaXRlbXMpPVwiaXRlbXMgPSAkZXZlbnRcIlxuICAgKiA+XG4gICAqPC9wby10YWJsZT5cbiAgICogYGBgXG4gICAqL1xuICBkZWxldGVJdGVtcygpIHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcbiAgICBjb25zdCBuZXdJdGVtc0ZpbHRlcmVkID0gWy4uLm5ld0l0ZW1zXS5maWx0ZXIoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpO1xuXG4gICAgaWYgKCF0aGlzLnNlcnZpY2VEZWxldGVBcGkpIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbXNMb2NhbChuZXdJdGVtcywgbmV3SXRlbXNGaWx0ZXJlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbXNTZXJ2aWNlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdE51bWJlcih2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQpO1xuICB9XG5cbiAgZ2V0Q2VsbERhdGEocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IGFueSB7XG4gICAgY29uc3QgYXJyYXlQcm9wZXJ0eSA9IGNvbHVtbi5wcm9wZXJ0eS5zcGxpdCgnLicpO1xuICAgIGlmIChhcnJheVByb3BlcnR5Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IG5lc3RlZFByb3BlcnRpZXMgPSBhcnJheVByb3BlcnR5O1xuICAgICAgbGV0IHZhbHVlOiBhbnkgPSByb3c7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIG5lc3RlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtwcm9wZXJ0eV0gfHwgdmFsdWVbcHJvcGVydHldID09PSAwID8gdmFsdWVbcHJvcGVydHldIDogJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb3dbY29sdW1uLnByb3BlcnR5XTtcbiAgICB9XG4gIH1cblxuICBnZXRCb29sZWFuTGFiZWwocm93VmFsdWU6IGFueSwgY29sdW1uQm9vbGVhbjogUG9UYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgaWYgKHJvd1ZhbHVlIHx8IHJvd1ZhbHVlID09PSBmYWxzZSB8fCByb3dWYWx1ZSA9PT0gMCkge1xuICAgICAgcm93VmFsdWUgPSBjb252ZXJ0VG9Cb29sZWFuKHJvd1ZhbHVlKTtcblxuICAgICAgaWYgKGNvbHVtbkJvb2xlYW4uYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gcm93VmFsdWUgPyBjb2x1bW5Cb29sZWFuLmJvb2xlYW4udHJ1ZUxhYmVsIHx8ICdTaW0nIDogY29sdW1uQm9vbGVhbi5ib29sZWFuLmZhbHNlTGFiZWwgfHwgJ07Do28nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gJ1NpbScgOiAnTsOjbyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd1ZhbHVlO1xuICB9XG5cbiAgZ2V0Q29sdW1uSWNvbnMocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IHJvd0ljb25zID0gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbik7XG5cbiAgICBpZiAoY29sdW1uLmljb25zKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dJY29ucykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VDdXN0b21JY29ucyhyb3dJY29ucywgY29sdW1uLmljb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRDdXN0b21JY29uKHJvd0ljb25zLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dJY29ucztcbiAgfVxuXG4gIGdldENvbHVtbkxhYmVsKHJvdzogYW55LCBjb2x1bW5MYWJlbDogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVDb2x1bW5MYWJlbCB7XG4gICAgcmV0dXJuIGNvbHVtbkxhYmVsLmxhYmVscy5maW5kKGxhYmVsSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgY29sdW1uTGFiZWwpID09PSBsYWJlbEl0ZW0udmFsdWUpO1xuICB9XG5cbiAgZ2V0U3VidGl0bGVDb2x1bW4ocm93OiBhbnksIHN1YnRpdGxlQ29sdW1uOiBQb1RhYmxlQ29sdW1uKTogUG9UYWJsZVN1YnRpdGxlQ29sdW1uIHtcbiAgICByZXR1cm4gc3VidGl0bGVDb2x1bW4uc3VidGl0bGVzLmZpbmQoc3VidGl0bGVJdGVtID0+IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBzdWJ0aXRsZUNvbHVtbikgPT09IHN1YnRpdGxlSXRlbS52YWx1ZSk7XG4gIH1cblxuICBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmhpZGVEZXRhaWwgJiZcbiAgICAgIHRoaXMubmFtZUNvbHVtbkRldGFpbCAmJlxuICAgICAgcm93LiRzaG93RGV0YWlsICYmXG4gICAgICB0aGlzLmNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiZcbiAgICAgICF0aGlzLmhhc1Jvd1RlbXBsYXRlXG4gICAgKTtcbiAgfVxuXG4gIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnRhYmxlUm93VGVtcGxhdGUgJiYgdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGUucG9UYWJsZVJvd1RlbXBsYXRlU2hvdyhyb3csIGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG9uQ2xpY2tMaW5rKGV2ZW50LCByb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGlmICghdGhpcy5jaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2VWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5jaGFuZ2VWaXNpYmxlQ29sdW1ucy5lbWl0KGNvbHVtbnMpO1xuICB9XG5cbiAgb25Db2x1bW5SZXN0b3JlTWFuYWdlcih2YWx1ZTogQXJyYXk8U3RyaW5nPikge1xuICAgIHRoaXMuY29sdW1uUmVzdG9yZU1hbmFnZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvblZpc2libGVDb2x1bW5zQ2hhbmdlKGNvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+KSB7XG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvb2x0aXBNb3VzZUVudGVyKGV2ZW50OiBhbnksIGNvbHVtbj86IFBvVGFibGVDb2x1bW4sIHJvdz86IGFueSkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXZlbnQudGFyZ2V0Lm9mZnNldFdpZHRoIDwgZXZlbnQudGFyZ2V0LnNjcm9sbFdpZHRoICYmIGV2ZW50LnRhcmdldC5pbm5lclRleHQudHJpbSgpKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBldmVudC50YXJnZXQuaW5uZXJUZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uKSB7XG4gICAgICB0aGlzLmNoZWNraW5nSWZDb2x1bW5IYXNUb29sdGlwKGNvbHVtbiwgcm93KTtcbiAgICB9XG4gIH1cblxuICB0b29sdGlwTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdG9nZ2xlUG9wdXAocm93LCB0YXJnZXRSZWYpIHtcbiAgICB0aGlzLnBvcHVwVGFyZ2V0ID0gdGFyZ2V0UmVmO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5wb1BvcHVwQ29tcG9uZW50LnRvZ2dsZShyb3cpO1xuICB9XG5cbiAgdHJhY2tCeShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgdmFsaWRhdGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICh0eXBlb2YgdGFibGVBY3Rpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0YWJsZUFjdGlvbi5kaXNhYmxlZChyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ29sdW1uTWFuYWdlcigpIHtcbiAgICB0aGlzLmxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkID0gWy4uLnRoaXMuY29sdW1uc107XG4gIH1cblxuICBvbkZpbHRlcmVkSXRlbXNDaGFuZ2UoaXRlbXM6IEFycmF5PGFueT4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHkpIHtcbiAgICAgIHRoaXMuc29ydEFycmF5KHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5LCB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcsIGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gaXRlbXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIHJlbW92ZSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSByZW1vdmlkby5cbiAgICogPiBBbyByZW1vdmVyIG8gaXRlbSwgYSBsaW5oYSBxdWUgbyByZXByZXNlbnRhIHNlcsOhIGV4Y2x1w61kYSBkYSB0YWJlbGEuXG4gICAqL1xuICByZW1vdmVJdGVtKGl0ZW06IG51bWJlciB8IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGZpbHRlckl0ZW0gPT4gZmlsdGVySXRlbSAhPT0gaXRlbSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSBpdGVtO1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBhdHVhbGl6YSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSBhdHVhbGl6YWRvLlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHVwZGF0ZWRJdGVtIEl0ZW0gcXVlIGZvaSBhdHVhbGl6YWRvLlxuICAgKiA+IEFvIGF0dWFsaXphciBvIGl0ZW0sIGEgaW5mb3JtYcOnw6NvIHNlcsOhIGFsdGVyYWRhIG5hIHRhYmVsYS5cbiAgICovXG4gIHVwZGF0ZUl0ZW0oaXRlbTogbnVtYmVyIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgdXBkYXRlZEl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpdGVtLCAxLCB1cGRhdGVkSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaW5kZXhJdGVtID0+IGluZGV4SXRlbSA9PT0gaXRlbSk7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEFycmF5PHN0cmluZz4+KSB7XG4gICAgaWYgKCF0aGlzLm1haW5Db2x1bW5zW2V2ZW50LmN1cnJlbnRJbmRleF0uZml4ZWQpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLm1haW5Db2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuXG4gICAgICBpZiAodGhpcy5oaWRlQ29sdW1uc01hbmFnZXIgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubmV3T3JkZXJDb2x1bW5zID0gdGhpcy5tYWluQ29sdW1ucztcbiAgICAgICAgY29uc3QgZGV0YWlsID0gdGhpcy5jb2x1bW5zLmZpbHRlcihpdGVtID0+IGl0ZW0ucHJvcGVydHkgPT09ICdkZXRhaWwnKVswXTtcblxuICAgICAgICBpZiAoZGV0YWlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucy5wdXNoKGRldGFpbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbHVtbnMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICghaXRlbS52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMubmV3T3JkZXJDb2x1bW5zO1xuXG4gICAgICAgIHRoaXMub25WaXNpYmxlQ29sdW1uc0NoYW5nZSh0aGlzLm5ld09yZGVyQ29sdW1ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFRlbXBsYXRlKGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlOiBQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmUgPSB0aGlzLnRhYmxlQ29sdW1uVGVtcGxhdGVzPy5maW5kKFxuICAgICAgdGFibGVDb2x1bW5UZW1wbGF0ZSA9PiB0YWJsZUNvbHVtblRlbXBsYXRlLnRhcmdldFByb3BlcnR5ID09PSBjb2x1bW4ucHJvcGVydHlcbiAgICApO1xuICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE7Do28gZm9pIHBvc3PDrXZlbCBlbmNvbnRyYXIgbyB0ZW1wbGF0ZSBwYXJhIGEgY29sdW5hOiAke2NvbHVtbi5wcm9wZXJ0eX0sIHBvciBnZW50aWxlemEgaW5mb3JtZSBhIHByb3ByaWVkYWRlIFtwLXByb3BlcnR5XWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICB9XG5cbiAgcHVibGljIGdldFdpZHRoQ29sdW1uTWFuYWdlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5NYW5hZ2VyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uQWN0aW9uTGVmdD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBoYXNTb21lRml4ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5zb21lKGl0ZW0gPT4gaXRlbS5maXhlZCA9PT0gdHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoaGVpZ2h0KSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KGhlaWdodCk7XG4gICAgdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciA9IHZhbHVlID8gdmFsdWUgLSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5oZWlnaHRUYWJsZVZpcnR1YWwgPSB0aGlzLmhlaWdodFRhYmxlQ29udGFpbmVyID8gdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciAtIHRoaXMuaXRlbVNpemUgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZXRUYWJsZU9wYWNpdHkoMSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKSB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0ICYmIHRoaXMudmVyaWZ5Q2hhbmdlSGVpZ2h0SW5Gb290ZXIoKSkge1xuICAgICAgdGhpcy5mb290ZXJIZWlnaHQgPSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCk7XG5cbiAgICAgIHRoaXMuY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIodGhpcy5oZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0luZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc0luZmluaXRlU2Nyb2xsKCkpIHtcbiAgICAgIGxldCBzY3JvbGxIZWlnaHQgPSAwO1xuXG4gICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgIHNjcm9sbEhlaWdodCA9IHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gdGhpcy50YWJsZVNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChzY3JvbGxIZWlnaHQgPj0gdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5pbmNsdWRlSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB0aGlzLnNldFNlbGVjdGVkTGlzdCgpO1xuICAgIHRoaXMubW9kYWxEZWxldGUuY2xvc2UoKTtcbiAgICB0aGlzLnBvTm90aWZpY2F0aW9uLnN1Y2Nlc3ModGhpcy5saXRlcmFscy5kZWxldGVTdWNjZXNzZnVsKTtcbiAgICB0aGlzLmV2ZW50RGVsZXRlLmVtaXQobmV3SXRlbXNGaWx0ZXJlZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hhbmdlU2l6ZUxvYWRpbmcoKSB7XG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0aGlzLnRhYmxlV3JhcHBlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodDtcblxuICAgIGlmICh0YWJsZUhlaWdodCA8PSAxNTApIHtcbiAgICAgIHRoaXMuc2l6ZUxvYWRpbmcgPSAnc20nO1xuICAgIH0gZWxzZSBpZiAodGFibGVIZWlnaHQgPiAxNTAgJiYgdGFibGVIZWlnaHQgPCAyNjApIHtcbiAgICAgIHRoaXMuc2l6ZUxvYWRpbmcgPSAnbWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpemVMb2FkaW5nID0gJ2xnJztcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tDaGFuZ2VzSXRlbXMoKSB7XG4gICAgY29uc3QgY2hhbmdlc0l0ZW1zID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLml0ZW1zKTtcblxuICAgIGlmIChjaGFuZ2VzSXRlbXMgJiYgdGhpcy5zZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmICF0aGlzLmhhc0NvbHVtbnMgJiYgdGhpcy5oYXNJdGVtcykge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5nZXREZWZhdWx0Q29sdW1ucyh0aGlzLml0ZW1zWzBdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNraW5nSWZDb2x1bW5IYXNUb29sdGlwKGNvbHVtbiwgcm93KSB7XG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGluaycgJiYgY29sdW1uLnRvb2x0aXAgJiYgIXRoaXMuY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbikpIHtcbiAgICAgIHJldHVybiAodGhpcy50b29sdGlwVGV4dCA9IGNvbHVtbi50b29sdGlwKTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdsYWJlbCcpIHtcbiAgICAgIGNvbnN0IGNvbHVtbkxhYmVsID0gdGhpcy5nZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbik7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBjb2x1bW5MYWJlbD8udG9vbHRpcCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWJvdW5jZVJlc2l6ZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0UmVzaXplKTtcbiAgICB0aGlzLnRpbWVvdXRSZXNpemUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIHNob3cgdGhlIHRhYmxlXG4gICAgICB0aGlzLnNldFRhYmxlT3BhY2l0eSgxKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlSXRlbXNMb2NhbChuZXdJdGVtczogQXJyYXk8YW55PiwgbmV3SXRlbXNGaWx0ZXJlZDogQXJyYXk8YW55Pikge1xuICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgdGhpcy5pdGVtcyA9IG5ld0l0ZW1zRmlsdGVyZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgIG5ld0l0ZW1zXG4gICAgICAgIC5zbGljZSgpXG4gICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0uJHNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUl0ZW0oaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbmRleC0tO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VzQWZ0ZXJEZWxldGUobmV3SXRlbXNGaWx0ZXJlZCk7XG4gICAgdGhpcy5vbkZpbHRlcmVkSXRlbXNDaGFuZ2UobmV3SXRlbXNGaWx0ZXJlZCk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUl0ZW1zU2VydmljZShuZXdJdGVtc0ZpbHRlcmVkOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlLmFkZChcbiAgICAgIHRoaXMuZGVmYXVsdFNlcnZpY2UuZGVsZXRlSXRlbSh0aGlzLnBhcmFtRGVsZXRlQXBpLCB0aGlzLml0ZW1zU2VsZWN0ZWRbMF1bdGhpcy5wYXJhbURlbGV0ZUFwaV0pLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IHZhbHVlID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5oYXNTZXJ2aWNlKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgLi4udGhpcy5wYXJhbXNGaWx0ZXIsXG4gICAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdJdGVtc0ZpbHRlcmVkLmxlbmd0aCArIDEsXG4gICAgICAgICAgICAgIHBhZ2U6IDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlLmFkZChcbiAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0U2VydmljZS5nZXRGaWx0ZXJlZEl0ZW1zKGZpbHRlcmVkUGFyYW1zKS5zdWJzY3JpYmUoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGFibGVSZXNwb25zZVByb3BlcnRpZXMoaXRlbXMpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pdGVtcyA9IG5ld0l0ZW1zRmlsdGVyZWQ7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VzQWZ0ZXJEZWxldGUobmV3SXRlbXNGaWx0ZXJlZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmxpdGVyYWxzLmRlbGV0ZUFwaUVycm9yKTtcbiAgICAgICAgICB0aGlzLm1vZGFsRGVsZXRlLmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5ldmVudERlbGV0ZS5lbWl0KHRoaXMuaXRlbXMpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDdXN0b21JY29uKHJvd0ljb25zLCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBjb25zdCBjdXN0b21JY29uID0gY29sdW1uLmljb25zLmZpbmQoaWNvbiA9PiByb3dJY29ucyA9PT0gaWNvbi52YWx1ZSk7XG4gICAgcmV0dXJuIGN1c3RvbUljb24gPyBbY3VzdG9tSWNvbl0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEhlaWdodFRhYmxlRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlRm9vdGVyRWxlbWVudCA/IHRoaXMudGFibGVGb290ZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogMDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzSW5maW5pdGVTY3JvbGwoKTogYm9vbGVhbiB7XG4gICAgbGV0IHNjcm9sbEhlaWdodCA9IDA7XG5cbiAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsICYmIHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICBzY3JvbGxIZWlnaHQgPSB0aGlzLnRhYmxlVmlydHVhbFNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy50YWJsZVNjcm9sbGFibGUpIHtcbiAgICAgIHNjcm9sbEhlaWdodCA9IHRoaXMudGFibGVTY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmluZmluaXRlU2Nyb2xsICYmIHRoaXMuaGFzSXRlbXMgJiYgIXRoaXMuc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQgJiYgdGhpcy5oZWlnaHQgPiAwICYmIHNjcm9sbEhlaWdodCA+IDA7XG4gIH1cblxuICBwcml2YXRlIGluY2x1ZGVJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgIGVsZW1lbnQgPSB0aGlzLnRhYmxlVmlydHVhbFNjcm9sbD8ubmF0aXZlRWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudCA9IHRoaXMudGFibGVTY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnLnBvLXRhYmxlLWNvbnRhaW5lci1vdmVyZmxvdycpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB0aGlzLnNjcm9sbEV2ZW50JCA9IHRoaXMuZGVmYXVsdFNlcnZpY2Uuc2Nyb2xsTGlzdGVuZXIoZWxlbWVudCk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50ID0gdGhpcy5zY3JvbGxFdmVudCQuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMuc2hvd01vcmVJbmZpbml0ZVNjcm9sbChldmVudCkpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUN1c3RvbUljb25zKHJvd0ljb25zOiBBcnJheTxzdHJpbmc+LCBjdXN0b21JY29uczogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IG1lcmdlZEljb25zID0gW107XG5cbiAgICByb3dJY29ucy5mb3JFYWNoKGNvbHVtblZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kQ3VzdG9tSWNvbiA9IGN1c3RvbUljb25zLmZpbmQoXG4gICAgICAgIGN1c3RvbUljb24gPT4gY29sdW1uVmFsdWUgPT09IGN1c3RvbUljb24uaWNvbiB8fCBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi52YWx1ZVxuICAgICAgKTtcbiAgICAgIGZvdW5kQ3VzdG9tSWNvbiA/IG1lcmdlZEljb25zLnB1c2goZm91bmRDdXN0b21JY29uKSA6IG1lcmdlZEljb25zLnB1c2goY29sdW1uVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lcmdlZEljb25zO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVPcGFjaXR5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnRhYmxlT3BhY2l0eSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDaGFuZ2VIZWlnaHRJbkZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJIZWlnaHQgIT09IHRoaXMuZ2V0SGVpZ2h0VGFibGVGb290ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlU2VsZWN0KGNvbXBhcmUsIHNlbGVjdFZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiBjb21wYXJlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChpdGVtID09PSBjb21wYXJlKSB7XG4gICAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSBzZWxlY3RWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGNvbXBhcmUoaXRlbSkpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zXCI+XG4gIDxkaXZcbiAgICAjY29sdW1uQmF0Y2hBY3Rpb25zXG4gICAgKm5nSWY9XCJoYXNWYWxpZENvbHVtbnMgJiYgaXRlbXNTZWxlY3RlZC5sZW5ndGggPiAwICYmICFoaWRlQmF0Y2hBY3Rpb25zXCJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnMtYmF0Y2gtYWN0aW9uc1wiXG4gID5cbiAgICA8ZGl2IFtuZ1BsdXJhbF09XCJpdGVtc1NlbGVjdGVkLmxlbmd0aFwiIGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zX19sYWJlbFwiPlxuICAgICAgPHN0cm9uZz5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIj0wXCI+e3sgbGl0ZXJhbHMubm9JdGVtIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIj0xXCI+e3sgbGl0ZXJhbHMub25lSXRlbSB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCJvdGhlclwiPnt7IGl0ZW1zU2VsZWN0ZWQubGVuZ3RoIH19IHt7IGxpdGVyYWxzLm11bHRpcGxlSXRlbXMgfX08L25nLXRlbXBsYXRlPlxuICAgICAgPC9zdHJvbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zX19idXR0b25zXCI+XG4gICAgICA8cG8tYnV0dG9uXG4gICAgICAgIHAtaWNvbj1cIklDT05fREVMRVRFXCJcbiAgICAgICAgW3AtZGFuZ2VyXT1cInRydWVcIlxuICAgICAgICBbcC1kaXNhYmxlZF09XCJpdGVtc1NlbGVjdGVkLmxlbmd0aCA+IDEgJiYgc2VydmljZURlbGV0ZUFwaSAhPT0gdW5kZWZpbmVkXCJcbiAgICAgICAgW3AtbGFiZWxdPVwibGl0ZXJhbHMuZGVsZXRlXCJcbiAgICAgICAgKHAtY2xpY2spPVwibW9kYWxEZWxldGUub3BlbigpXCJcbiAgICAgID48L3BvLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAjY29sdW1uTWFuYWdlciAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyXCIgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWNvbHVtbi1tYW5hZ2VyXCI+XG4gICAgPHBvLWJ1dHRvblxuICAgICAgI2NvbHVtbk1hbmFnZXJUYXJnZXRcbiAgICAgIHAtaWNvbj1cIklDT05fU0VUVElOR1NcIlxuICAgICAgcC1raW5kPVwidGVydGlhcnlcIlxuICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwibGVmdFwiXG4gICAgICBbcC1hcmlhLWxhYmVsXT1cImxpdGVyYWxzLmNvbHVtbnNNYW5hZ2VyXCJcbiAgICAgIFtwLXRvb2x0aXBdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgKHAtY2xpY2spPVwib25PcGVuQ29sdW1uTWFuYWdlcigpXCJcbiAgICA+PC9wby1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCIhaGlkZVRhYmxlU2VhcmNoICYmIGhhc1ZhbGlkQ29sdW1uc1wiIGNsYXNzPVwicG8tdGFibGUtc2VhcmNoXCI+XG4gICAgPHBvLXNlYXJjaFxuICAgICAgW3AtaXRlbXNdPVwiaXRlbXNcIlxuICAgICAgW3AtZmlsdGVyLWtleXNdPVwiZmlsdGVyZWRDb2x1bW5zXCJcbiAgICAgIFtwLWZpbHRlci10eXBlXT1cImZpbHRlclR5cGVcIlxuICAgICAgKHAtZmlsdGVyZWQtaXRlbXMtY2hhbmdlKT1cIm9uRmlsdGVyZWRJdGVtc0NoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9wby1zZWFyY2g+XG4gIDwvZGl2PlxuPC9kaXY+XG48cG8tY29udGFpbmVyICpuZ0lmPVwiY29udGFpbmVyOyBlbHNlIHRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIiBwLW5vLXBhZGRpbmc+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbnRhaW5lclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L3BvLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN0YWJsZUNvbnRhaW5lclRlbXBsYXRlPlxuICA8ZGl2IFtjbGFzcy5wby10YWJsZS1jb250YWluZXItc3RpY2t5XT1cImxvYWRpbmdcIj5cbiAgICA8cG8tbG9hZGluZy1vdmVybGF5ICpuZ0lmPVwibG9hZGluZ1wiIFtwLXRleHRdPVwibGl0ZXJhbHMubG9hZGluZ0RhdGFcIiBbcC1zaXplXT1cInNpemVMb2FkaW5nXCI+PC9wby1sb2FkaW5nLW92ZXJsYXk+XG4gICAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLW1haW4tY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICN0YWJsZVdyYXBwZXJcbiAgICAgICAgY2xhc3M9XCJwby10YWJsZS13cmFwcGVyXCJcbiAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1jb2x1bW5zLXBpeGVsc109XCJhbGxDb2x1bW5zV2lkdGhQaXhlbHNcIlxuICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJ0YWJsZU9wYWNpdHlcIlxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVpZ2h0XCIgY2xhc3M9XCJwby10YWJsZS1jb250YWluZXJcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiAjcG9UYWJsZVRib2R5IFtjbGFzcy5wby10YWJsZS1jb250YWluZXItZml4ZWQtaW5uZXJdPVwidmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdmlydHVhbFNjcm9sbFwiIGNsYXNzPVwicG8tdGFibGUtY29udGFpbmVyLW92ZXJmbG93XCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaGVpZ2h0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLWZvb3RlclwiICpuZ0lmPVwiaGFzRm9vdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHN1YnRpdGxlQ29sdW1uczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWZvb3RlciBbcC1saXRlcmFsc109XCJsaXRlcmFsc1wiIFtwLXN1YnRpdGxlc109XCJjb2x1bW4uc3VidGl0bGVzXCI+IDwvcG8tdGFibGUtc3VidGl0bGUtZm9vdGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gU2hvdyBNb3JlIEJ1dHRvbiAtLT5cbjxkaXZcbiAgKm5nSWY9XCIhaW5maW5pdGVTY3JvbGxcIlxuICBjbGFzcz1cInBvLXJvdyBwby10YWJsZS1mb290ZXItc2hvdy1tb3JlXCJcbiAgW2NsYXNzLnBvLWludmlzaWJsZV09XCJzaG93TW9yZS5vYnNlcnZlcnMubGVuZ3RoID09PSAwICYmICFoYXNTZXJ2aWNlXCJcbiAgI3RhYmxlRm9vdGVyXG4+XG4gIDxwby1idXR0b25cbiAgICBjbGFzcz1cInBvLW9mZnNldC14bC00IHBvLW9mZnNldC1sZy00IHBvLW9mZnNldC1tZC0zIHBvLWxnLTQgcG8tbWQtNlwiXG4gICAgW3AtZGlzYWJsZWRdPVwic2hvd01vcmVEaXNhYmxlZFwiXG4gICAgW3AtbGFiZWxdPVwibGl0ZXJhbHMubG9hZE1vcmVEYXRhXCJcbiAgICBbcC1sb2FkaW5nXT1cImxvYWRpbmdTaG93TW9yZVwiXG4gICAgKHAtY2xpY2spPVwib25TaG93TW9yZSgpXCJcbiAgPlxuICA8L3BvLWJ1dHRvbj5cbjwvZGl2PlxuXG48IS0tIFRhYmxlIGRlZmF1bHQtLT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVUZW1wbGF0ZT5cbiAgPHRhYmxlXG4gICAgI3RhYmxlU2Nyb2xsYWJsZVxuICAgIGNsYXNzPVwicG8tdGFibGVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICdwby10YWJsZS1zZWxlY3RhYmxlJzogc2VsZWN0YWJsZSxcbiAgICAgICdwby10YWJsZS1zdHJpcGVkJzogc3RyaXBlZCxcbiAgICAgICdwby10YWJsZS1kYXRhLWZpeGVkLWNvbHVtbnMnOiBhcHBseUZpeGVkQ29sdW1ucygpLFxuICAgICAgJ3BvLXRhYmxlLXRleHQtd3JhcC1lbmFibGVkJzogdGV4dFdyYXBcbiAgICB9XCJcbiAgICBbYXR0ci5wLXNwYWNpbmddPVwic3BhY2luZ1wiXG4gID5cbiAgICA8dGhlYWQgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdGlja3ldPVwiaGVpZ2h0ID4gMCAmJiAhdmlydHVhbFNjcm9sbFwiPlxuICAgICAgPHRyXG4gICAgICAgIFtuZ0NsYXNzXT1cIiFoZWlnaHQgPyB7ICduby1ob3Zlcic6IGhpZGVTZWxlY3RBbGwsICdwby10YWJsZS1jb2x1bW4tZHJhZyc6IHRoaXMuaXNEcmFnZ2FibGUgfSA6ICcnXCJcbiAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cImhpZGVTZWxlY3RBbGwgPyAnbm9uZScgOiAnYXV0bydcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiPlxuICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKHAtY2hhbmdlKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICA+PC9wby1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5BY3Rpb25MZWZ0XG4gICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWlnaHQ7IHRoZW4gbm9Db2x1bW5zV2l0aEhlaWdodDsgZWxzZSBub0NvbHVtbnNXaXRob3V0SGVpZ2h0XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7IHRoZW4gdGFibGVEZWZhdWx0VGhEcmFnRHJvcDsgZWxzZSB0YWJsZURlZmF1bHRUaERlZmF1bHRcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGVmYXVsdFRoRHJhZ0Ryb3A+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICd3aWR0aCc6XG4gICAgICAgICAgICAgICAgaGVpZ2h0ID4gMCAmJiAhdmlydHVhbFNjcm9sbCA/ICghaGFzSXRlbXMgPyAnMTAwJScgOiBhcHBseUZpeGVkQ29sdW1ucygpID8gY29sdW1uLndpZHRoIDogJ2F1dG8nKSA6ICcnXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1kcmFnLWJveF09XCJ0aGlzLmlzRHJhZ2dhYmxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImNvbHVtbi5maXhlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgJiYgIWNvbHVtbi5maXhlZFwiPlxuICAgICAgICAgICAgICAgIDxwby1pY29uIGNka0RyYWdIYW5kbGUgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1Bob3NwaG9ySWNvbidcIiBwLWljb249XCJJQ09OX0RSQUdcIj48L3BvLWljb24+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxMlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMThcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGVmYXVsdFRoRGVmYXVsdD5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgJ3dpZHRoJzpcbiAgICAgICAgICAgICAgICBoZWlnaHQgPiAwICYmICF2aXJ0dWFsU2Nyb2xsID8gKCFoYXNJdGVtcyA/ICcxMDAlJyA6IGFwcGx5Rml4ZWRDb2x1bW5zKCkgPyBjb2x1bW4ud2lkdGggOiAnYXV0bycpIDogJydcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0ICYmIChoYXNWaXNpYmxlQWN0aW9ucyB8fCBoaWRlQ29sdW1uc01hbmFnZXIpXCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWFjdGlvbnNdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgPjwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG5cbiAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgIDx0ciBjbGFzcz1cInBvLXRhYmxlLXJvdyBwby10YWJsZS1yb3ctbm8tZGF0YVwiPlxuICAgICAgICA8dGQgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRcIiBjbGFzcz1cInBvLXRhYmxlLW5vLWRhdGEgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRib2R5IGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBmaWx0ZXJlZEl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3dcIiBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQgOiAnc3ltYm9sJyA6ICcxLjItMicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IHBvX3RpbWU6IGNvbHVtbi5mb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdE51bWJlcihnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbi5mb3JtYXQpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxpbmtcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwiY29sdW1uLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLWxpbmtdPVwicm93W2NvbHVtbi5saW5rXVwiXG4gICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgW3AtdmFsdWVdPVwiZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0xpbmsoJGV2ZW50LCByb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWxpbms+XG5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1pY29uXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgW3AtY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgW3AtaWNvbnNdPVwiZ2V0Q29sdW1uSWNvbnMocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1pY29uPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3VidGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZSBbcC1zdWJ0aXRsZV09XCJnZXRTdWJ0aXRsZUNvbHVtbihyb3csIGNvbHVtbilcIj48L3BvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGFiZWwgW3AtdmFsdWVdPVwiZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pXCI+IDwvcG8tdGFibGUtY29sdW1uLWxhYmVsPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBkZSBhw6dvZXMgbmEgZGlyZWl0YSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaGFzUm93VGVtcGxhdGUgJiYgcm93LiRzaG93RGV0YWlsICYmIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVSb3dUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaXNTaG93TWFzdGVyRGV0YWlsKHJvdylcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxwby10YWJsZS1kZXRhaWxcbiAgICAgICAgICAgICAgW3Atc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlICYmICFkZXRhaWxIaWRlU2VsZWN0XCJcbiAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICBbcC1pdGVtc109XCJyb3dbbmFtZUNvbHVtbkRldGFpbF1cIlxuICAgICAgICAgICAgICBbcC1wYXJlbnQtcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRhYmxlIHdpdGggdmlydHVhbCBzY3JvbGwgLS0+XG48bmctdGVtcGxhdGUgI3RhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlPlxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3RhYmxlVmlydHVhbFNjcm9sbFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiXG4gICAgW21pbkJ1ZmZlclB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyIDwgMTAwID8gMTAwIDogaGVpZ2h0VGFibGVDb250YWluZXJcIlxuICAgIFttYXhCdWZmZXJQeF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lciA8IDIwMCA/IDIwMCA6IGhlaWdodFRhYmxlQ29udGFpbmVyXCJcbiAgPlxuICAgIDx0YWJsZVxuICAgICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgICAncG8tdGFibGUtc3RyaXBlZCc6IHN0cmlwZWQsXG4gICAgICAgICdwby10YWJsZS1kYXRhLWZpeGVkLWNvbHVtbnMnOiBhcHBseUZpeGVkQ29sdW1ucygpLFxuICAgICAgICAncG8tdGFibGUtdGV4dC13cmFwLWVuYWJsZWQnOiB0ZXh0V3JhcFxuICAgICAgfVwiXG4gICAgICBbYXR0ci5wLXNwYWNpbmddPVwic3BhY2luZ1wiXG4gICAgPlxuICAgICAgPHRoZWFkIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLXN0aWNreVwiIFtzdHlsZS50b3BdPVwiaW52ZXJzZU9mVHJhbnNsYXRpb25cIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaGlkZVNlbGVjdEFsbCA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCI+XG4gICAgICAgICAgICAgIDxwby1jaGVja2JveFxuICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgID48L3BvLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCIoaGFzTWFzdGVyRGV0YWlsQ29sdW1uIHx8IGhhc1Jvd1RlbXBsYXRlKSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgI2NvbHVtbkFjdGlvbkxlZnRcbiAgICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7XG4gICAgICAgICAgICAgIHRoZW4gdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcDtcbiAgICAgICAgICAgICAgZWxzZSB0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcD5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogIWhhc0l0ZW1zID8gJzEwMCUnIDogYXBwbHlGaXhlZENvbHVtbnMoKSA/IGNvbHVtbi53aWR0aCA6ICdhdXRvJyB9XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tZHJhZy1ib3hdPVwidGhpcy5pc0RyYWdnYWJsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImNvbHVtbi5maXhlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgJiYgIWNvbHVtbi5maXhlZFwiPlxuICAgICAgICAgICAgICAgICAgPHBvLWljb24gY2RrRHJhZ0hhbmRsZSAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fRFJBR1wiPjwvcG8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiNlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHQ+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uIGV4YW1wbGUtYm94XCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgICBzb3J0ICYmXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCc6ICFoYXNJdGVtcyA/ICcxMDAlJyA6IGFwcGx5Rml4ZWRDb2x1bW5zKCkgPyBjb2x1bW4ud2lkdGggOiAnYXV0bycgfVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuXG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICAgIDx0Ym9keVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZmlsdGVyZWRJdGVtczsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXJvd1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2luZ2xlU2VsZWN0ID8gaW5wdXRSYWRpbyA6IGlucHV0Q2hlY2tib3g7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxvIGlucHV0IGRvIHBvLXRhYmxlIC0tPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBjb20gYXMgYcOnw7VlcyBuYSBlc3F1ZXJkYSAocGFkcsOjbyktLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW5dPVwiY29sdW1uLnR5cGUgIT09ICdpY29uJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWljb25zXT1cImNvbHVtbi50eXBlID09PSAnaWNvbidcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50LCBjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjb2x1bW5UZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShjb2x1bW4pOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDZWxsVGVtcGxhdGU/LnRlbXBsYXRlUmVmOyBjb250ZXh0OiB7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQgOiAnc3ltYm9sJyA6ICcxLjItMicgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IHBvX3RpbWU6IGNvbHVtbi5mb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE51bWJlcihnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbi5mb3JtYXQpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1saW5rXG4gICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAgICAgICAgIFtwLWFjdGlvbl09XCJjb2x1bW4uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtwLWxpbmtdPVwicm93W2NvbHVtbi5saW5rXVwiXG4gICAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgIFtwLXZhbHVlXT1cImdldENlbGxEYXRhKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0xpbmsoJGV2ZW50LCByb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1saW5rPlxuXG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1pY29uXG4gICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICAgIFtwLWNvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgW3AtaWNvbnNdPVwiZ2V0Q29sdW1uSWNvbnMocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1pY29uPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdWJ0aXRsZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxwby10YWJsZS1zdWJ0aXRsZS1jaXJjbGUgW3Atc3VidGl0bGVdPVwiZ2V0U3VidGl0bGVDb2x1bW4ocm93LCBjb2x1bW4pXCI+PC9wby10YWJsZS1zdWJ0aXRsZS1jaXJjbGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxhYmVsIFtwLXZhbHVlXT1cImdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKVwiPiA8L3BvLXRhYmxlLWNvbHVtbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBkZSBhw6dvZXMgbmEgZGlyZWl0YSAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGhhc1Jvd1RlbXBsYXRlICYmIHJvdy4kc2hvd0RldGFpbCAmJiBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KVwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlUm93VGVtcGxhdGUudGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGlzU2hvd01hc3RlckRldGFpbChyb3cpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICAgIFtwLXNlbGVjdGFibGVdPVwic2VsZWN0YWJsZSAmJiAhZGV0YWlsSGlkZVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgICAgW3AtcGFyZW50LXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtZGV0YWlsPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90YWJsZT5cbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG48L25nLXRlbXBsYXRlPlxuXG48cG8tcG9wdXAgI3BvcHVwIFtwLWFjdGlvbnNdPVwiYWN0aW9uc1wiIFtwLXRhcmdldF09XCJwb3B1cFRhcmdldFwiPiA8L3BvLXBvcHVwPlxuXG48bmctdGVtcGxhdGUgI3BvVGFibGVDb2x1bW5EZXRhaWwgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDxwby1pY29uXG4gICAgKm5nSWY9XCIoY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSAmJiAhaGFzUm93VGVtcGxhdGUpIHx8IChpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KSAmJiBoYXNSb3dUZW1wbGF0ZSlcIlxuICAgIFtwLWljb25dPVwicm93LiRzaG93RGV0YWlsID8gJ0lDT05fQVJST1dfVVAnIDogJ0lDT05fQVJST1dfRE9XTidcIlxuICAgIGNsYXNzPVwicG8tY2xpY2thYmxlXCJcbiAgPlxuICA8L3BvLWljb24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0UmFkaW8gbGV0LXJvdz5cbiAgPHBvLXJhZGlvIFtuYW1lXT1cImlkUmFkaW9cIiBbcC1jaGVja2VkXT1cInJvdy4kc2VsZWN0ZWRcIiAocC1jaGFuZ2Utc2VsZWN0ZWQpPVwic2VsZWN0Um93KHJvdylcIj48L3BvLXJhZGlvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dENoZWNrYm94IGxldC1yb3c+XG4gIDxwby1jaGVja2JveFxuICAgIG5hbWU9XCJjaGVja2JveFwiXG4gICAgKHAtY2hhbmdlKT1cInNlbGVjdGFibGUgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCJcbiAgICBbcC1jaGVja2JveFZhbHVlXT1cInJvdy4kc2VsZWN0ZWQgPT09IG51bGwgPyAnbWl4ZWQnIDogcm93LiRzZWxlY3RlZFwiXG4gID48L3BvLWNoZWNrYm94PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50SGVhZGVyVGVtcGxhdGUgbGV0LWNvbHVtbj5cbiAgPHNwYW5cbiAgICAjY29sdW1uSGVhZGVyXG4gICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXNcIlxuICAgIFtwLXRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgIFtwLWFwcGVuZC1pbi1ib2R5XT1cInRydWVcIlxuICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudClcIlxuICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICA+XG4gICAge3sgY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIH19XG4gIDwvc3Bhbj5cblxuICA8c3BhblxuICAgICpuZ0lmPVwic29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tdW5zZWxlY3RlZF09XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSAhPT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKVwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLWRlc2NlbmRpbmddPVwiXG4gICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiBzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXG4gICAgXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tYXNjZW5kaW5nXT1cIlxuICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiYgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmdcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpICE9PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pXCI+XG4gICAgICA8cG8taWNvbiAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fU09SVFwiPjwvcG8taWNvbj5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTE4LjI5MjkgMTUuMjkyOUwxNyAxNi41ODU4TDE3IDEwQzE3IDkuNDQ3NzIgMTYuNTUyMyA5IDE2IDlDMTUuNDQ3NyA5IDE1IDkuNDQ3NzIgMTUgMTBMMTUgMTYuNTg1OEwxMy43MDcxIDE1LjI5MjlDMTMuMzE2NiAxNC45MDI0IDEyLjY4MzQgMTQuOTAyNCAxMi4yOTI5IDE1LjI5MjlDMTEuOTAyNCAxNS42ODM0IDExLjkwMjQgMTYuMzE2NiAxMi4yOTI5IDE2LjcwNzFMMTUuMjkyOSAxOS43MDcxQzE1LjY4MzQgMjAuMDk3NiAxNi4zMTY2IDIwLjA5NzYgMTYuNzA3MSAxOS43MDcxTDE5LjcwNzEgMTYuNzA3MUMyMC4wOTc2IDE2LjMxNjYgMjAuMDk3NiAxNS42ODM0IDE5LjcwNzEgMTUuMjkyOUMxOS4zMTY2IDE0LjkwMjQgMTguNjgzNCAxNC45MDI0IDE4LjI5MjkgMTUuMjkyOVpNNS43MDcxNiA4LjcwNzFMNy4wMDAwNiA3LjQxNDJMNy4wMDAwMyAxNEM3LjAwMDAyIDE0LjU1MjMgNy40NDc3NCAxNSA4LjAwMDAyIDE1QzguNTUyMzEgMTUgOS4wMDAwMiAxNC41NTIzIDkuMDAwMDMgMTRMOS4wMDAwNiA3LjQxNDE4TDEwLjI5MjkgOC43MDcwN0MxMC42ODM1IDkuMDk3NTkgMTEuMzE2NiA5LjA5NzU4IDExLjcwNzIgOC43MDcwNkMxMi4wOTc3IDguMzE2NTMgMTIuMDk3NyA3LjY4MzM2IDExLjcwNzIgNy4yOTI4NEw4LjcwNzE4IDQuMjkyODZDOC4zMTY2NSAzLjkwMjM0IDcuNjgzNDkgMy45MDIzNSA3LjI5Mjk2IDQuMjkyODdMNC4yOTI5NSA3LjI5Mjg5QzMuOTAyNDIgNy42ODM0MiAzLjkwMjQyIDguMzE2NTggNC4yOTI5NCA4LjcwNzExQzQuNjgzNDcgOS4wOTc2MyA1LjMxNjYzIDkuMDk3NjIgNS43MDcxNiA4LjcwNzFaXCJcbiAgICAgICAgICBmaWxsPVwiIzFEMUQzMFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiBzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXCI+XG4gICAgICA8cG8taWNvbiAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fU09SVF9BU0NcIj48L3BvLWljb24+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQb0ljb24nXCJcbiAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xMSA5LjQxNDIxTDkuNzA3MTEgMTAuNzA3MUM5LjMxNjU4IDExLjA5NzYgOC42ODM0MiAxMS4wOTc2IDguMjkyODkgMTAuNzA3MUM3LjkwMjM3IDEwLjMxNjYgNy45MDIzNyA5LjY4MzQyIDguMjkyODkgOS4yOTI4OUwxMS4yOTI5IDYuMjkyODlDMTEuNjgzNCA1LjkwMjM3IDEyLjMxNjYgNS45MDIzNyAxMi43MDcxIDYuMjkyODlMMTUuNzA3MSA5LjI5Mjg5QzE2LjA5NzYgOS42ODM0MiAxNi4wOTc2IDEwLjMxNjYgMTUuNzA3MSAxMC43MDcxQzE1LjMxNjYgMTEuMDk3NiAxNC42ODM0IDExLjA5NzYgMTQuMjkyOSAxMC43MDcxTDEzIDkuNDE0MjFWMTZDMTMgMTYuNTUyMyAxMi41NTIzIDE3IDEyIDE3QzExLjQ0NzcgMTcgMTEgMTYuNTUyMyAxMSAxNlY5LjQxNDIxWlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXCI+XG4gICAgICA8cG8taWNvbiBjZGtEcmFnSGFuZGxlICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQaG9zcGhvckljb24nXCIgcC1pY29uPVwiSUNPTl9TT1JUX0RFU0NcIj48L3BvLWljb24+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQb0ljb24nXCJcbiAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk05LjcwNzExIDEzLjI5MjlMMTEgMTQuNTg1OFY3QzExIDYuNDQ3NzIgMTEuNDQ3NyA2IDEyIDZDMTIuNTUyMyA2IDEzIDYuNDQ3NzIgMTMgN1YxNC41ODU4TDE0LjI5MjkgMTMuMjkyOUMxNC42ODM0IDEyLjkwMjQgMTUuMzE2NiAxMi45MDI0IDE1LjcwNzEgMTMuMjkyOUMxNi4wOTc2IDEzLjY4MzQgMTYuMDk3NiAxNC4zMTY2IDE1LjcwNzEgMTQuNzA3MUwxMi43MDcxIDE3LjcwNzFDMTIuMzE2NiAxOC4wOTc2IDExLjY4MzQgMTguMDk3NiAxMS4yOTI5IDE3LjcwNzFMOC4yOTI4OSAxNC43MDcxQzcuOTAyMzcgMTQuMzE2NiA3LjkwMjM3IDEzLjY4MzQgOC4yOTI4OSAxMy4yOTI5QzguNjgzNDIgMTIuOTAyNCA5LjMxNjU4IDEyLjkwMjQgOS43MDcxMSAxMy4yOTI5WlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhIZWlnaHQ+XG4gIDxkaXYgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJcIiBbc3R5bGUud2lkdGgucHhdPVwiaGVhZGVyV2lkdGhcIj5cbiAgICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhvdXRIZWlnaHQ+XG4gIHt7IGhhc1ZhbGlkQ29sdW1ucyA/IGxpdGVyYWxzLm5vVmlzaWJsZUNvbHVtbiA6IGxpdGVyYWxzLm5vQ29sdW1ucyB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBUZW1wbGF0ZSBkZSBhw6fDtWVzIC0tPlxuPG5nLXRlbXBsYXRlICNBY3Rpb25zQ29sdW1uVGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDx0ZFxuICAgICpuZ0lmPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uIHBvLXRhYmxlLWNvbHVtbi1zaW5nbGUtYWN0aW9uXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmIGFjdGlvblJpZ2h0ID8gZ2V0V2lkdGhDb2x1bW5NYW5hZ2VyKCkgOiAnJ1wiXG4gICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJoZWlnaHQgJiYgIWFjdGlvblJpZ2h0ID8gZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIDogJydcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJoZWlnaHQgJiYgIWFjdGlvblJpZ2h0ID8gZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIDogJydcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJmaXJzdEFjdGlvbi52aXNpYmxlICE9PSBmYWxzZVwiXG4gICAgICBjbGFzcz1cInBvLXRhYmxlLXNpbmdsZS1hY3Rpb24gcG8tY2xpY2thYmxlXCJcbiAgICAgIFtjbGFzcy5wby10YWJsZS1hY3Rpb24tZGlzYWJsZWRdPVwiZmlyc3RBY3Rpb24uZGlzYWJsZWQgPyB2YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdywgZmlyc3RBY3Rpb24pIDogZmFsc2VcIlxuICAgICAgKGNsaWNrKT1cImV4ZWN1dGVUYWJsZUFjdGlvbihyb3csIGZpcnN0QWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHBvLWljb24gKm5nSWY9XCJmaXJzdEFjdGlvbi5pY29uXCIgY2xhc3M9XCJwby10YWJsZS1zaW5nbGUtYWN0aW9uLWNvbnRlbnRcIiBbcC1pY29uXT1cImZpcnN0QWN0aW9uLmljb25cIj48L3BvLWljb24+XG4gICAgICB7eyBmaXJzdEFjdGlvbi5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L3RkPlxuXG4gIDx0ZCAqbmdJZj1cInZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDFcIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1hY3Rpb25zXCI+XG4gICAgPGRpdiAjcG9wdXBUYXJnZXQgY2xhc3M9XCJwby1jbGlja2FibGVcIiAoY2xpY2spPVwidG9nZ2xlUG9wdXAocm93LCBwb3B1cFRhcmdldClcIj5cbiAgICAgIDxwby1pY29uIHAtaWNvbj1cIklDT05fTU9SRVwiPjwvcG8taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC90ZD5cbjwvbmctdGVtcGxhdGU+XG5cbjxwby10YWJsZS1jb2x1bW4tbWFuYWdlclxuICAqbmdJZj1cIiFoaWRlQ29sdW1uc01hbmFnZXJcIlxuICBbcC1jb2x1bW5zXT1cImNvbHVtbnNcIlxuICBbcC1tYXgtY29sdW1uc109XCJtYXhDb2x1bW5zXCJcbiAgW3AtdGFyZ2V0XT1cImNvbHVtbk1hbmFnZXJUYXJnZXRcIlxuICBbcC1sYXN0LXZpc2libGUtY29sdW1ucy1zZWxlY3RlZF09XCJsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZFwiXG4gIFtwLWhpZGUtYWN0aW9uLWZpeGVkLWNvbHVtbnNdPVwiaGlkZUFjdGlvbkZpeGVkQ29sdW1uc1wiXG4gIChwLXZpc2libGUtY29sdW1ucy1jaGFuZ2UpPVwib25WaXNpYmxlQ29sdW1uc0NoYW5nZSgkZXZlbnQpXCJcbiAgKHAtY2hhbmdlLXZpc2libGUtY29sdW1ucyk9XCJvbkNoYW5nZVZpc2libGVDb2x1bW5zKCRldmVudClcIlxuICBbcC1jb2x1bW5zLWRlZmF1bHRdPVwiaW5pdGlhbENvbHVtbnNcIlxuICAocC1pbml0aWFsLWNvbHVtbnMpPVwib25Db2x1bW5SZXN0b3JlTWFuYWdlcigkZXZlbnQpXCJcbj5cbjwvcG8tdGFibGUtY29sdW1uLW1hbmFnZXI+XG5cbjxwby1tb2RhbFxuICAjbW9kYWxEZWxldGVcbiAgW3AtdGl0bGVdPVwibGl0ZXJhbHMuZGVsZXRlXCJcbiAgW3AtcHJpbWFyeS1hY3Rpb25dPVwiY29uZmlybVwiXG4gIFtwLXNlY29uZGFyeS1hY3Rpb25dPVwiY2xvc2VcIlxuICBbcC1jbGljay1vdXRdPVwidHJ1ZVwiXG4+XG4gIDxwIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlXCI+e3sgbGl0ZXJhbHMuYm9keURlbGV0ZSB9fTwvcD5cbjwvcG8tbW9kYWw+XG4iXX0=
2377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFVBQVUsRUFDVixNQUFNLEVBSU4sUUFBUSxFQUlSLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUMvRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUd0RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDckN6QixZQUFxQjs7O0lBQXJCLDZDQUFxQjs7O0lBQ3JCLFlBQXNCOzs7SUFBdEIsOENBQXNCOzs7SUFDbkIsWUFBdUQ7OztJQUF2RCxnR0FBdUQ7Ozs7SUFUL0YsbUNBSUMsY0FBQSxhQUFBO0lBR0ssd0ZBQWtFLDJFQUFBLDJFQUFBO0lBR3BFLGlCQUFTLEVBQUE7SUFHWCwrQkFBcUQsb0JBQUE7SUFNakQsdUxBQVcsZUFBQSxXQUFrQixDQUFBLElBQUM7SUFDL0IsaUJBQVksRUFBQSxFQUFBOzs7SUFmVixlQUFpQztJQUFqQyxzREFBaUM7SUFXbEMsZUFBaUI7SUFBakIsK0JBQWlCLHdGQUFBLG1DQUFBOzs7O0lBUXZCLG1DQUEyRyx3QkFBQTtJQVF2RyxzS0FBVyxlQUFBLDZCQUFxQixDQUFBLElBQUM7SUFDbEMsaUJBQVksRUFBQTs7O0lBSFgsZUFBd0M7SUFBeEMsNkRBQXdDLDZDQUFBOzs7O0lBTTVDLCtCQUF5RSxvQkFBQTtJQUtyRSw0TUFBMkIsZUFBQSxxQ0FBNkIsQ0FBQSxJQUFDO0lBRTNELGlCQUFZLEVBQUE7OztJQUxWLGNBQWlCO0lBQWpCLHNDQUFpQix5Q0FBQSxvQ0FBQTs7O0lBU3JCLHdCQUF3RTs7O0lBRDFFLHdDQUEwRTtJQUN4RSxtR0FBd0U7SUFDMUUsaUJBQWU7Ozs7SUFERSxjQUF3QztJQUF4QyxzQ0FBd0M7OztJQUtyRCx5Q0FBZ0g7OztJQUE1RSxxREFBK0IsK0JBQUE7OztJQVd6RCx3QkFBNEU7OztJQUQ5RSwyQkFBMkI7SUFDekIsOEdBQTRFO0lBQzlFLGlCQUFNOzs7O0lBRFcsY0FBNEM7SUFBNUMsdUNBQTRDOzs7SUFHM0Qsd0JBQStEOzs7SUFEakUsK0JBQXlHO0lBQ3ZHLDhHQUErRDtJQUNqRSxpQkFBTTs7OztJQUYwRCw0REFBd0M7SUFDdkYsY0FBK0I7SUFBL0Isc0NBQStCOzs7SUFOcEQsK0JBQXdGLG9CQUFBO0lBRXBGLHNGQUVNLHlFQUFBO0lBSVIsaUJBQU0sRUFBQTs7O0lBUnVDLDREQUF3QztJQUNsRSxjQUFzRDtJQUF0RCx1RUFBc0Q7SUFDakUsZUFBbUI7SUFBbkIsNENBQW1CO0lBR25CLGNBQW9CO0lBQXBCLDZDQUFvQjs7O0lBTzVCLHdCQUErRDs7O0lBRGpFLDJCQUFxQjtJQUNuQix3R0FBK0Q7SUFDakUsaUJBQU07Ozs7SUFEVyxjQUErQjtJQUEvQixzQ0FBK0I7OztJQU9wRCw2QkFBdUU7SUFDckUsK0NBQStHO0lBQ2pILDBCQUFlOzs7O0lBRGEsY0FBdUI7SUFBdkIsNkNBQXVCLHFDQUFBOzs7SUFGckQsK0JBQStDO0lBQzdDLHdHQUVlO0lBQ2pCLGlCQUFNOzs7SUFINkIsY0FBb0I7SUFBcEIsaURBQW9CLGlDQUFBOzs7SUE1QnZELDJCQUFpRDtJQUMvQyw4R0FBZ0g7SUFDaEgsK0JBQXFDLGtCQUFBO0lBT2pDLGdGQVNNLG1FQUFBO0lBS1IsaUJBQU0sRUFBQSxFQUFBO0lBSVYsZ0ZBSU07OztJQS9CRCwyREFBMkM7SUFDekIsY0FBYTtJQUFiLHFDQUFhO0lBTTlCLGVBQThCO0lBQTlCLDhDQUE4QjtJQUQ5QixvRkFBb0U7SUFHOUQsZUFBWTtJQUFaLG9DQUFZO0lBV1osY0FBYTtJQUFiLHFDQUFhO0lBT0ssY0FBZTtJQUFmLHVDQUFlOzs7O0lBUS9DLG1DQUtDLG9CQUFBO0lBTUcsc0tBQVcsZUFBQSxvQkFBWSxDQUFBLElBQUM7SUFFMUIsaUJBQVksRUFBQTs7O0lBVlosNEZBQXFFO0lBS25FLGVBQStCO0lBQS9CLG9EQUErQix5Q0FBQSxxQ0FBQTs7OztJQW9DdkIsdUNBS0M7SUFGQyxzTUFBWSxlQUFBLHVCQUFlLENBQUEsSUFBQztJQUU3QixpQkFBYzs7O0lBRGIsMEZBQTREOzs7SUFWbEUsOEJBSUMsVUFBQTtJQUVHLHFHQUtlO0lBQ2pCLGlCQUFNLEVBQUE7OztJQVZOLHlFQUF3RDtJQUduRCxjQUE0QztJQUE1Qyw2REFBNEM7SUFHNUMsY0FBb0I7SUFBcEIsNkNBQW9COzs7SUFPM0IseUJBR007OztJQUdOLCtCQUtNOzs7SUFGSix3RUFBdUQseURBQUE7OztJQUt2RCx3QkFBb0c7OztJQUR0RyxrQ0FBMkY7SUFDekYsdUdBQW9HO0lBQ3RHLGlCQUFLOzs7OztJQURZLGVBQWM7SUFBZCxxQ0FBYyxrQkFBQSxrQkFBQTs7O0lBRy9CLHdCQUdlOzs7SUFtQ1AsOEJBQTJGOzs7SUFDM0YsbUJBUUM7SUFSRCwrQkFRQztJQUNDLDZCQUEyQyxpQkFBQSxpQkFBQSxpQkFBQSxpQkFBQSxpQkFBQTtJQU03QyxpQkFBTTs7O0lBakJSLDZCQUF3RDtJQUN0RCwwSEFBMkYsMEdBQUE7SUFpQjdGLDBCQUFlOzs7SUFqQlcsY0FBb0M7SUFBcEMsNkRBQW9DO0lBRXpELGNBQThCO0lBQTlCLHVEQUE4Qjs7O0lBZ0JuQyx3QkFBd0c7Ozs7Ozs7SUFuRDVHLDhCQXlCQztJQUxDLHFQQUFTLGVBQUEsOEJBQWtCLENBQUEsSUFBQzs7O0lBTTVCLCtCQUtDO0lBQ0MscUhBa0JlLHdHQUFBO0lBRWpCLGlCQUFNLEVBQUE7Ozs7O0lBakROLHlDQUE0QiwrQkFBQSwrQkFBQTtJQUk1QixtR0FBd0UsNERBQUEsaURBQUE7SUFDeEUsaVJBS0UsbUxBQUEsd0RBQUEsbUNBQUE7SUFQRixrSUFBNEY7SUFzQjFGLGVBQTRDO0lBQTVDLDZEQUE0Qyw4RkFBQSwrREFBQTtJQUk3QixjQUF1QztJQUF2QywrREFBdUM7SUFtQnZDLGNBQXlDO0lBQXpDLHVDQUF5QyxxRUFBQTs7O0lBbkQ1RCw2RkFxREs7OztJQXBEZ0IsNkNBQWdCLGlDQUFBOzs7SUFtRmpDLHdCQUF3Rzs7OztJQTVCNUcsOEJBcUJDO0lBRkMsc1BBQVMsZUFBQSw4QkFBa0IsQ0FBQSxJQUFDOzs7SUFHNUIsK0JBS0M7SUFDQyxzSEFBd0c7SUFDMUcsaUJBQU0sRUFBQTs7Ozs7SUExQk4seUNBQTRCLCtCQUFBLCtCQUFBO0lBSTVCLG1HQUF3RSw0REFBQTtJQUN4RSxpUkFLRSxtTEFBQSxtQ0FBQTtJQVBGLGtJQUE0RjtJQWtCMUYsZUFBNEM7SUFBNUMsNkRBQTRDLDhGQUFBLCtEQUFBO0lBSTdCLGNBQXlDO0lBQXpDLHVDQUF5QyxxRUFBQTs7O0lBNUI1RCw4RkE4Qks7OztJQTdCZ0IsNkNBQWdCLGlDQUFBOzs7SUFnQ3ZDLHlCQUdNOzs7SUFFTixxQkFJTTs7O0lBRkosdUVBQXNELG9EQUFBOzs7SUFNNUQsaUNBQXVFLGFBQUEsYUFBQSxXQUFBO0lBRzFELFlBQXNCO0lBQUEsaUJBQU8sRUFBQSxFQUFBLEVBQUE7OztJQURsQyxlQUF1QjtJQUF2Qiw2Q0FBdUI7SUFDbEIsZUFBc0I7SUFBdEIsd0RBQXNCOzs7SUFTM0Isd0JBQ2U7OztJQUZqQiw4QkFBMEQ7SUFDeEQsK0hBQ2U7SUFDakIsaUJBQUs7Ozs7OztJQUZZLGNBQTZEO0lBQTdELHFFQUE2RCxpRUFBQTs7Ozs7O0lBSzlFLDhCQU9DO0lBREMsaVBBQVMsZUFBQSw4QkFBaUIsQ0FBQSxJQUFDO0lBRTNCLDhIQUljO0lBQ2hCLGlCQUFLOzs7Ozs7O0lBSkQsY0FBd0M7SUFBeEMsdUNBQXdDLCtFQUFBOzs7O0lBTzVDLDJIQUtjOzs7Ozs7O0lBSFosdUNBQTBDLCtFQUFBOzs7SUE0QnRDLHdCQUNlOzs7SUFGakIsNEJBQXVDO0lBQ3JDLHNJQUNlO0lBQ2pCLGlCQUFPOzs7OztJQUZVLGNBQXVDO0lBQXZDLG9FQUF1QyxvR0FBQTs7O0lBS3RELHdCQUNlOzs7O0lBRmpCLDRCQUFxQztJQUNuQyxzSUFDZTtJQUNqQixpQkFBTzs7Ozs7SUFGVSxjQUFrRDtJQUFsRCxxSEFBa0QsOEVBQUE7OztJQUluRSw0QkFBZ0M7SUFDOUIsWUFDRjtJQUFBLGlCQUFPOzs7OztJQURMLGNBQ0Y7SUFERSxrSEFDRjs7O0lBRUEsNEJBQWlDO0lBQy9CLFlBQ0Y7O0lBQUEsaUJBQU87Ozs7O0lBREwsY0FDRjtJQURFLHdJQUNGOzs7SUFFQSw0QkFBNkI7SUFDM0IsWUFDRjs7SUFBQSxpQkFBTzs7Ozs7SUFETCxjQUNGO0lBREUscUlBQ0Y7OztJQUVBLDRCQUE2QjtJQUMzQixZQUNGOztJQUFBLGlCQUFPOzs7OztJQURMLGNBQ0Y7SUFERSwwSUFDRjs7O0lBRUEsNEJBQWlDO0lBQy9CLFlBQ0Y7O0lBQUEsaUJBQU87Ozs7O0lBREwsY0FDRjtJQURFLDhJQUNGOzs7SUFFQSw0QkFBK0I7SUFDN0IsWUFDRjtJQUFBLGlCQUFPOzs7OztJQURMLGNBQ0Y7SUFERSxzSEFDRjs7OztJQUVBLGlEQVFDO0lBREMsbVZBQVMsZUFBQSxrREFBZ0MsQ0FBQSxJQUFDO0lBRTVDLGlCQUF1Qjs7Ozs7SUFQckIsNkNBQTBCLDREQUFBLHFDQUFBLGtCQUFBLHVEQUFBOzs7SUFTNUIsNENBTXVCOzs7OztJQUpyQixzQ0FBbUIsMERBQUEsa0JBQUE7OztJQU1yQiw0QkFBaUM7SUFDL0IsZ0RBQW1HO0lBQ3JHLGlCQUFPOzs7OztJQURxQixjQUE2QztJQUE3Qyw2RUFBNkM7OztJQUV6RSw0QkFBOEI7SUFDNUIsNkNBQXdGO0lBQzFGLGlCQUFPOzs7OztJQURrQixjQUF1QztJQUF2Qyx1RUFBdUM7OztJQUVoRSw0QkFBdUI7SUFBQSxZQUE4QjtJQUFBLGlCQUFPOzs7OztJQUFyQyxjQUE4QjtJQUE5QixnRUFBOEI7Ozs7SUFqRnpELCtCQWFDO0lBREMsaVBBQVMsZUFBQSwyQkFBa0IsR0FBRywyQkFBYyxHQUFHLGNBQWMsQ0FBQSxJQUFDO0lBRTlELGdDQU9DO0lBRkMsaVVBQWMsZUFBQSx3REFBc0MsQ0FBQSxJQUFDLGlNQUN2QyxlQUFBLDRCQUFtQixDQUFBLElBRG9CO0lBR3JELGdIQUdPLG1HQUFBLG1HQUFBLG1HQUFBLG1HQUFBLG1HQUFBLG1HQUFBLG1HQUFBLHFJQUFBLHFJQUFBLHFHQUFBLHFHQUFBLHFHQUFBO0lBeURULGlCQUFNLEVBQUE7Ozs7O0lBaEZOLDBDQUE0QixnQ0FBQSxnQ0FBQTtJQUc1Qiw4REFBZ0QsMkZBQUEsMkRBQUEsc0RBQUE7SUFJaEQsaURBQThCLHdEQUFBO0lBTzVCLGNBQXdCO0lBQXhCLDJDQUF3QixrQ0FBQSwwQkFBQTtJQU1qQixjQUE4QjtJQUE5QiwrQ0FBOEI7SUFLOUIsY0FBNEI7SUFBNUIsNkNBQTRCO0lBSzVCLGNBQXVCO0lBQXZCLHdDQUF1QjtJQUl2QixjQUF3QjtJQUF4Qix5Q0FBd0I7SUFJeEIsY0FBb0I7SUFBcEIscUNBQW9CO0lBSXBCLGNBQW9CO0lBQXBCLHFDQUFvQjtJQUlwQixjQUF3QjtJQUF4Qix5Q0FBd0I7SUFJeEIsY0FBc0I7SUFBdEIsdUNBQXNCO0lBSzFCLGNBQW9CO0lBQXBCLHFDQUFvQjtJQVdwQixjQUFvQjtJQUFwQixxQ0FBb0I7SUFPaEIsY0FBd0I7SUFBeEIseUNBQXdCO0lBR3hCLGNBQXFCO0lBQXJCLHNDQUFxQjs7Ozs7SUFPaEMsOEJBSUM7SUFEQyxpUEFBUyxlQUFBLDhCQUFpQixDQUFBLElBQUM7SUFFM0IsOEhBSWM7SUFDaEIsaUJBQUs7Ozs7Ozs7SUFKRCxjQUF3QztJQUF4Qyx1Q0FBd0MsK0VBQUE7Ozs7SUFPNUMsMkhBS2M7Ozs7Ozs7SUFIWix1Q0FBMEMsK0VBQUE7Ozs7O0lBTTlDLDBCQUFvRyxjQUFBO0lBRWhHLDhIQUljO0lBQ2hCLGlCQUFLLEVBQUE7Ozs7OztJQU51QyxjQUFzQztJQUF0Qyw2REFBc0M7SUFFOUUsY0FBaUQ7SUFBakQsd0VBQWlELCtFQUFBOzs7O0lBT3ZELDBCQUFzRCxjQUFBLDJCQUFBO0lBT2hELG9PQUFnQixlQUFBLGdDQUF1QixDQUFBLElBQUM7SUFFMUMsaUJBQWtCLEVBQUEsRUFBQTs7OztJQVJlLGNBQXNDO0lBQXRDLDZEQUFzQztJQUVyRSxjQUFnRDtJQUFoRCxnRkFBZ0QsZ0RBQUEsK0NBQUEseUJBQUE7OztJQXRKeEQsaUNBQTRHLGFBQUE7SUFFeEcsc0dBR0sseUZBQUEsc0ZBQUEsMkZBQUEseUZBQUEsc0ZBQUE7SUFrSVAsaUJBQUs7SUFFTCxzR0FRSyx5RkFBQTtJQWNQLGlCQUFROzs7OztJQTlKbUIsY0FBcUY7SUFBckYsNEdBQXFGO0lBQ3ZHLGNBQWdCO0lBQWhCLHlDQUFnQjtJQU9sQixjQUliO0lBSmEsK0tBSWI7SUFZYSxjQUFtRTtJQUFuRSw0R0FBbUU7SUFPakQsY0FBZ0I7SUFBaEIsNkNBQWdCLGlDQUFBO0lBcUZsQyxjQUEyQztJQUEzQyxvRUFBMkM7SUFhM0MsY0FBaUI7SUFBakIsMENBQWlCO0lBT2pCLGNBQTZGO0lBQTdGLGtKQUE2RjtJQVU3RixjQUErQztJQUEvQyxvRkFBK0M7OztJQXBKeEQsNkJBQXFDO0lBQ25DLHNHQStKUTtJQUNWLDBCQUFlOzs7SUFoS3FDLGNBQWtCO0lBQWxCLCtDQUFrQixpQ0FBQTs7Ozs7O0lBeEt4RSxxQ0FXQyxZQUFBLGFBQUE7SUFPSyxxTUFBc0IsZUFBQSxxQkFBWSxDQUFBLElBQUM7SUFFbkMsOEVBYUssaUVBQUEsaUVBQUEsaUVBQUEscUZBQUEsb0hBQUEsc0hBQUEsbUVBQUEsbUVBQUE7SUEySFAsaUJBQUssRUFBQTtJQUdQLHNGQU1RLHVGQUFBO0lBb0tWLGlCQUFROzs7OztJQXRVTix3S0FNRTtJQUNGLDJDQUEwQjtJQUVuQixlQUE2RDtJQUE3RCxvRkFBNkQ7SUFHaEUsY0FBaUM7SUFBakMsaURBQWlDO0lBRGpDLHNIQUFrRztJQU8vRixjQUF5QjtJQUF6QixpREFBeUI7SUFlekIsY0FBMkc7SUFBM0csd0pBQTJHO0lBTzNHLGNBQW1FO0lBQW5FLHlHQUFtRTtJQUtqRSxjQUFxQjtJQUFyQiw2Q0FBcUI7SUFLdkIsY0FBMEM7SUFBMUMsa0VBQTBDLGtCQUFBLGtCQUFBO0lBOEYxQyxlQUEwRztJQUExRyx1SkFBMEc7SUFLMUcsY0FBdUY7SUFBdkYsb0lBQXVGO0lBTzNELGNBQWtDO0lBQWxDLGlFQUFrQztJQVF0RCxjQUFvQjtJQUFwQiw0Q0FBb0I7Ozs7SUFzTXpCLHVDQUtDO0lBRkMseU1BQVksZUFBQSx3QkFBZSxDQUFBLElBQUM7SUFFN0IsaUJBQWM7OztJQURiLDRGQUE0RDs7O0lBVmxFLDhCQUlDLFVBQUE7SUFFRyxzR0FLZTtJQUNqQixpQkFBTSxFQUFBOzs7SUFWTiwwRUFBd0Q7SUFHbkQsY0FBNEM7SUFBNUMsOERBQTRDO0lBRzVDLGNBQW9CO0lBQXBCLDhDQUFvQjs7O0lBTzNCLHlCQUtNOzs7SUFHTiwrQkFLTTs7O0lBRkoseUVBQXVELDBEQUFBOzs7SUFLdkQsd0JBQW9HOzs7SUFEdEcsa0NBQTJGO0lBQ3pGLHdHQUFvRztJQUN0RyxpQkFBSzs7Ozs7SUFEWSxlQUFjO0lBQWQsc0NBQWMsa0JBQUEsa0JBQUE7OztJQUcvQix3QkFPZTs7O0lBZ0NQLDhCQUEyRjs7O0lBQzNGLG1CQVFDO0lBUkQsK0JBUUM7SUFDQyw2QkFBMkMsaUJBQUEsaUJBQUEsaUJBQUEsaUJBQUEsaUJBQUE7SUFNN0MsaUJBQU07OztJQWpCUiw2QkFBd0Q7SUFDdEQsNEhBQTJGLDRHQUFBO0lBaUI3RiwwQkFBZTs7O0lBakJXLGNBQW9DO0lBQXBDLDhEQUFvQztJQUV6RCxjQUE4QjtJQUE5Qix3REFBOEI7OztJQWdCbkMsd0JBQXdHOzs7O0lBaEQ1Ryw4QkFzQkM7SUFMQywwUEFBUyxlQUFBLGdDQUFrQixDQUFBLElBQUM7OztJQU01QiwrQkFLQztJQUNDLHVIQWtCZSwwR0FBQTtJQUVqQixpQkFBTSxFQUFBOzs7OztJQTlDTiwwQ0FBNEIsZ0NBQUEsZ0NBQUE7SUFJNUIsc0dBQXdFLDZEQUFBLGtEQUFBO0lBQ3hFLHlSQUtFLGtJQUFBLHlEQUFBLG9DQUFBO0lBUEYsb0lBQTRGO0lBbUIxRixlQUE0QztJQUE1Qyw4REFBNEMsZ0dBQUEsZ0VBQUE7SUFJN0IsY0FBdUM7SUFBdkMsaUVBQXVDO0lBbUJ2QyxjQUF5QztJQUF6Qyx1Q0FBeUMsc0VBQUE7OztJQWhENUQsK0ZBa0RLOzs7SUFqRGdCLDhDQUFnQixrQ0FBQTs7O0lBNkVqQyx3QkFBd0c7Ozs7SUF6QjVHLCtCQWtCQztJQUZDLDBQQUFTLGVBQUEsZ0NBQWtCLENBQUEsSUFBQzs7O0lBRzVCLCtCQUtDO0lBQ0MsdUhBQXdHO0lBQzFHLGlCQUFNLEVBQUE7Ozs7O0lBdkJOLDBDQUE0QixnQ0FBQSxnQ0FBQTtJQUk1QixzR0FBd0UsNkRBQUE7SUFDeEUseVJBS0Usa0lBQUEsb0NBQUE7SUFQRixvSUFBNEY7SUFlMUYsZUFBNEM7SUFBNUMsOERBQTRDLGdHQUFBLGdFQUFBO0lBSTdCLGNBQXlDO0lBQXpDLHVDQUF5QyxzRUFBQTs7O0lBekI1RCxnR0EyQks7OztJQTFCZ0IsOENBQWdCLGtDQUFBOzs7SUE2QnZDLHlCQUdNOzs7SUFFTixxQkFJTTs7O0lBRkosd0VBQXNELHFEQUFBOzs7SUFNNUQsaUNBQXVFLGFBQUEsYUFBQSxXQUFBO0lBRzFELFlBQXNCO0lBQUEsaUJBQU8sRUFBQSxFQUFBLEVBQUE7OztJQURsQyxlQUF1QjtJQUF2Qiw4Q0FBdUI7SUFDbEIsZUFBc0I7SUFBdEIseURBQXNCOzs7SUFlM0Isd0JBQ2U7OztJQUZqQiw4QkFBMEQ7SUFDeEQsZ0lBQ2U7SUFDakIsaUJBQUs7Ozs7OztJQUZZLGNBQTZEO0lBQTdELHNFQUE2RCxrRUFBQTs7Ozs7SUFLOUUsOEJBT0M7SUFEQyxtUEFBUyxlQUFBLCtCQUFpQixDQUFBLElBQUM7SUFFM0IsK0hBSWM7SUFDaEIsaUJBQUs7Ozs7Ozs7SUFKRCxjQUF3QztJQUF4Qyx1Q0FBd0MsaUZBQUE7Ozs7SUFPNUMsNEhBS2M7Ozs7Ozs7SUFIWix1Q0FBMEMsaUZBQUE7OztJQTRCdEMsd0JBR2U7OztJQUpqQiw0QkFBdUM7SUFDckMsdUlBR2U7SUFDakIsaUJBQU87Ozs7O0lBSEYsY0FBdUM7SUFBdkMsb0VBQXVDLHFHQUFBOzs7SUFNMUMsd0JBR2U7OztJQUpqQiw0QkFBcUM7SUFDbkMsdUlBR2U7SUFDakIsaUJBQU87Ozs7O0lBSEYsY0FBa0Q7SUFBbEQscUhBQWtELCtFQUFBOzs7SUFLdkQsNEJBQWdDO0lBQzlCLFlBQ0Y7SUFBQSxpQkFBTzs7Ozs7SUFETCxjQUNGO0lBREUsbUhBQ0Y7OztJQUVBLDRCQUFpQztJQUMvQixZQUNGOztJQUFBLGlCQUFPOzs7OztJQURMLGNBQ0Y7SUFERSx5SUFDRjs7O0lBRUEsNEJBQTZCO0lBQzNCLFlBQ0Y7O0lBQUEsaUJBQU87Ozs7O0lBREwsY0FDRjtJQURFLHNJQUNGOzs7SUFFQSw0QkFBNkI7SUFDM0IsWUFDRjs7SUFBQSxpQkFBTzs7Ozs7SUFETCxjQUNGO0lBREUsMklBQ0Y7OztJQUVBLDRCQUFpQztJQUMvQixZQUNGOztJQUFBLGlCQUFPOzs7OztJQURMLGNBQ0Y7SUFERSwrSUFDRjs7O0lBRUEsNEJBQStCO0lBQzdCLFlBQ0Y7SUFBQSxpQkFBTzs7Ozs7SUFETCxjQUNGO0lBREUsdUhBQ0Y7Ozs7SUFFQSxpREFRQztJQURDLHFWQUFTLGVBQUEsbURBQWdDLENBQUEsSUFBQztJQUU1QyxpQkFBdUI7Ozs7O0lBUHJCLDZDQUEwQiw2REFBQSxzQ0FBQSxtQkFBQSx3REFBQTs7O0lBUzVCLDRDQU11Qjs7Ozs7SUFKckIsc0NBQW1CLDJEQUFBLG1CQUFBOzs7SUFNckIsNEJBQWlDO0lBQy9CLGdEQUFtRztJQUNyRyxpQkFBTzs7Ozs7SUFEcUIsY0FBNkM7SUFBN0MsOEVBQTZDOzs7SUFFekUsNEJBQThCO0lBQzVCLDZDQUF3RjtJQUMxRixpQkFBTzs7Ozs7SUFEa0IsY0FBdUM7SUFBdkMsd0VBQXVDOzs7SUFFaEUsNEJBQXVCO0lBQUEsWUFBOEI7SUFBQSxpQkFBTzs7Ozs7SUFBckMsY0FBOEI7SUFBOUIsaUVBQThCOzs7O0lBckZ6RCwrQkFhQztJQURDLG1QQUFTLGVBQUEsMkJBQWtCLEdBQUcsNEJBQWMsR0FBRyxjQUFjLENBQUEsSUFBQztJQUU5RCxnQ0FPQztJQUZDLG1VQUFjLGVBQUEseURBQXNDLENBQUEsSUFBQyxrTUFDdkMsZUFBQSw0QkFBbUIsQ0FBQSxJQURvQjtJQUdyRCxpSEFLTyxvR0FBQSxvR0FBQSxvR0FBQSxvR0FBQSxvR0FBQSxvR0FBQSxvR0FBQSxzSUFBQSxzSUFBQSxzR0FBQSxzR0FBQSxzR0FBQTtJQTJEVCxpQkFBTSxFQUFBOzs7OztJQXBGTiwwQ0FBNEIsZ0NBQUEsZ0NBQUE7SUFHNUIsOERBQWdELDJGQUFBLDJEQUFBLHNEQUFBO0lBSWhELHVFQUFzQyxvQ0FBQTtJQU9wQyxjQUF3QjtJQUF4QiwyQ0FBd0IsbUNBQUEsMEJBQUE7SUFNakIsY0FBOEI7SUFBOUIsK0NBQThCO0lBTzlCLGNBQTRCO0lBQTVCLDZDQUE0QjtJQU81QixjQUF1QjtJQUF2Qix3Q0FBdUI7SUFJdkIsY0FBd0I7SUFBeEIseUNBQXdCO0lBSXhCLGNBQW9CO0lBQXBCLHFDQUFvQjtJQUlwQixjQUFvQjtJQUFwQixxQ0FBb0I7SUFJcEIsY0FBd0I7SUFBeEIseUNBQXdCO0lBSXhCLGNBQXNCO0lBQXRCLHVDQUFzQjtJQUsxQixjQUFvQjtJQUFwQixxQ0FBb0I7SUFXcEIsY0FBb0I7SUFBcEIscUNBQW9CO0lBT2hCLGNBQXdCO0lBQXhCLHlDQUF3QjtJQUd4QixjQUFxQjtJQUFyQixzQ0FBcUI7Ozs7O0lBT2hDLDhCQUlDO0lBREMsbVBBQVMsZUFBQSwrQkFBaUIsQ0FBQSxJQUFDO0lBRTNCLCtIQUljO0lBQ2hCLGlCQUFLOzs7Ozs7O0lBSkQsY0FBd0M7SUFBeEMsdUNBQXdDLGlGQUFBOzs7O0lBTzVDLDRIQUtjOzs7Ozs7O0lBSFosdUNBQTBDLGlGQUFBOzs7O0lBTTlDLDBCQUFvRyxjQUFBO0lBRWhHLCtIQUljO0lBQ2hCLGlCQUFLLEVBQUE7Ozs7OztJQU51QyxjQUFzQztJQUF0Qyw2REFBc0M7SUFFOUUsY0FBaUQ7SUFBakQsd0VBQWlELGlGQUFBOzs7O0lBT3ZELDBCQUFzRCxjQUFBLDJCQUFBO0lBT2hELHFPQUFnQixlQUFBLGdDQUF1QixDQUFBLElBQUM7SUFFMUMsaUJBQWtCLEVBQUEsRUFBQTs7OztJQVJlLGNBQXNDO0lBQXRDLDZEQUFzQztJQUVyRSxjQUFnRDtJQUFoRCxnRkFBZ0QsZ0RBQUEsZ0RBQUEsMEJBQUE7OztJQWhLeEQsaUNBR0MsYUFBQTtJQUtHLHVHQUdLLDBGQUFBLHVGQUFBLDZGQUFBLDBGQUFBLHVGQUFBO0lBc0lQLGlCQUFLO0lBRUwsdUdBUUssMEZBQUE7SUFjUCxpQkFBUTs7Ozs7SUFuS0osY0FBcUY7SUFBckYsK0dBQXFGO0lBRWhGLGNBQWdCO0lBQWhCLDBDQUFnQjtJQU9sQixjQUlmO0lBSmUsb0xBSWY7SUFZZSxjQUFtRTtJQUFuRSwrR0FBbUU7SUFPakQsY0FBZ0I7SUFBaEIsOENBQWdCLGtDQUFBO0lBeUZsQyxjQUEyQztJQUEzQyxxRUFBMkM7SUFhM0MsY0FBaUI7SUFBakIsMkNBQWlCO0lBT2pCLGNBQTZGO0lBQTdGLHdKQUE2RjtJQVU3RixjQUErQztJQUEvQyx1RkFBK0M7OztJQTlKeEQsNkJBQXFDO0lBQ25DLHdHQXlLUTtJQUNWLDBCQUFlOzs7SUF4S2EsY0FBa0I7SUFBbEIsd0RBQWtCLDBDQUFBOzs7O0lBL0tsRCw2REFNQyxnQkFBQSxpQkFBQSxjQUFBO0lBaUJPLHNNQUFzQixlQUFBLHFCQUFZLENBQUEsSUFBQztJQUVuQywrRUFhSyxrRUFBQSxrRUFBQSxrRUFBQSxzRkFBQSx3SEFBQSx3SEFBQSxvRUFBQSxvRUFBQTtJQTJIUCxpQkFBSyxFQUFBO0lBR1AsdUZBTVEsd0ZBQUE7SUE4S1YsaUJBQVEsRUFBQTs7Ozs7SUFyVlIsMkRBQXdDO0lBRHhDLDBDQUFxQixzRkFBQSxzRkFBQTtJQU9uQixlQU1FO0lBTkYsd0tBTUU7SUFDRiwyQ0FBMEI7SUFFWSxjQUFrQztJQUFsQyxrREFBa0M7SUFFcEUsY0FBaUM7SUFBakMsaURBQWlDO0lBTTlCLGNBQXlCO0lBQXpCLGlEQUF5QjtJQWV6QixjQUdiO0lBSGEsd0pBR2I7SUFNYSxjQUFtRTtJQUFuRSx5R0FBbUU7SUFLakUsY0FBcUI7SUFBckIsNkNBQXFCO0lBS3ZCLGNBRWdCO0lBRmhCLGtFQUVnQixtQkFBQSxtQkFBQTtJQTBGaEIsZUFBMEc7SUFBMUcsdUpBQTBHO0lBSzFHLGNBQXVGO0lBQXZGLG9JQUF1RjtJQU8zRCxjQUFrQztJQUFsQyxpRUFBa0M7SUFRdEQsY0FBb0I7SUFBcEIsNENBQW9COzs7SUFtTHZDLCtCQUtVOzs7SUFIUixtRkFBZ0U7OztJQUZsRSwwRkFLVTs7Ozs7SUFKUCx3S0FBNEc7Ozs7SUFRL0cscUNBQTRGO0lBQXJDLGdRQUFxQixlQUFBLDRCQUFjLENBQUEsSUFBQztJQUFDLGlCQUFXOzs7O0lBQTdGLHNDQUFnQixpQ0FBQTs7OztJQUkxQix3Q0FJQztJQUZDLGlQQUFZLHFDQUFhLDRCQUFjLEdBQUcsY0FBYyxDQUFBLElBQUM7SUFFMUQsaUJBQWM7OztJQURiLDRGQUFvRTs7O0lBMkJsRSwrQkFBNkU7OztJQUM3RSxtQkFPQztJQVBELGdDQU9DO0lBQ0MsNEJBS0U7SUFDSixpQkFBTTs7O0lBaEJSLDZCQUF3RjtJQUN0RixnSEFBNkUsZ0dBQUE7SUFnQi9FLDBCQUFlOzs7SUFoQkgsY0FBb0M7SUFBcEMsOERBQW9DO0lBRTNDLGNBQThCO0lBQTlCLHdEQUE4Qjs7O0lBaUJqQywrQkFBaUY7OztJQUNqRixtQkFPQztJQVBELGdDQU9DO0lBQ0MsNEJBS0U7SUFDSixpQkFBTTs7O0lBaEJSLDZCQUFrSDtJQUNoSCxnSEFBaUYsZ0dBQUE7SUFnQm5GLDBCQUFlOzs7SUFoQkgsY0FBb0M7SUFBcEMsOERBQW9DO0lBRTNDLGNBQThCO0lBQTlCLHdEQUE4Qjs7O0lBaUJqQywrQkFBZ0c7OztJQUNoRyxtQkFPQztJQVBELGdDQU9DO0lBQ0MsNEJBS0U7SUFDSixpQkFBTTs7O0lBaEJSLDZCQUFtSDtJQUNqSCxnSEFBZ0csZ0dBQUE7SUFnQmxHLDBCQUFlOzs7SUFoQlcsY0FBb0M7SUFBcEMsOERBQW9DO0lBRXpELGNBQThCO0lBQTlCLHdEQUE4Qjs7O0lBbkRyQyw0QkFTQztJQUNDLDBHQWlCZSw2RkFBQSw2RkFBQTtJQXVDakIsaUJBQU87Ozs7SUFoRUwsMExBQTJHLCtNQUFBLCtNQUFBO0lBUTVGLGNBQXVFO0lBQXZFLDhKQUF1RTtJQW1CdkUsY0FBaUc7SUFBakcsaU1BQWlHO0lBbUJqRyxjQUFrRztJQUFsRyxrTUFBa0c7Ozs7SUEzRG5ILHNDQU9DO0lBRkMsd0xBQWMsZUFBQSxrQ0FBeUIsQ0FBQSxJQUFDLHFLQUMxQixlQUFBLDRCQUFtQixDQUFBLElBRE87SUFHeEMsWUFDRjs7SUFBQSxpQkFBTztJQUVQLG9GQWtFTzs7OztJQTFFTCwrQ0FBeUIsMEJBQUE7SUFLekIsZUFDRjtJQURFLGdHQUNGO0lBR0csZUFBdUM7SUFBdkMscUVBQXVDOzs7SUFxRTFDLGdDQUF3RTtJQUN0RSxZQUNGO0lBQUEsaUJBQU07OztJQUZtQyxrREFBOEI7SUFDckUsY0FDRjtJQURFLHdIQUNGOzs7SUFJQSxZQUNGOzs7SUFERSx5SEFDRjs7O0lBaUJNLCtCQUErRzs7O0lBQXRDLGtEQUEyQjs7OztJQU50RyxnQ0FLQztJQURDLDROQUFTLGVBQUEsMkRBQW9DLENBQUEsSUFBQztJQUU5QyxxR0FBK0c7SUFDL0csWUFDRjtJQUFBLGlCQUFNOzs7O0lBTEosZ0pBQXVHO0lBRzdGLGNBQXNCO0lBQXRCLGdEQUFzQjtJQUNoQyxjQUNGO0lBREUsMkRBQ0Y7OztJQWZGLCtCQU1DO0lBQ0MsdUZBUU07SUFDUixpQkFBSzs7O0lBYkgsOEdBQXVFLHlHQUFBLHFHQUFBO0lBS3BFLGNBQW1DO0lBQW5DLDZEQUFtQzs7OztJQVV4QywrQkFBc0Usb0JBQUE7SUFDN0Isc1BBQVMsZUFBQSxxQ0FBNkIsQ0FBQSxJQUFDO0lBQzVFLCtCQUFzQztJQUN4QyxpQkFBTSxFQUFBOzs7SUFyQlIsZ0ZBZ0JLLG1FQUFBOzs7SUFmRiw2Q0FBb0I7SUFpQmxCLGNBQStCO0lBQS9CLHdEQUErQjs7OztJQU90QyxvREFXQztJQUpDLG1QQUE0QixlQUFBLHVDQUE4QixDQUFBLElBQUMsc09BQy9CLGVBQUEsdUNBQThCLENBQUEsSUFEQyx3TkFHdEMsZUFBQSx1Q0FBOEIsQ0FBQSxJQUhRO0lBSzdELGlCQUEwQjs7O0lBVnhCLDJDQUFxQixxQ0FBQSx5Q0FBQSx1RUFBQSwrREFBQSw2Q0FBQTs7QURuM0J2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxREc7QUFNSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsb0JBQW9CO0lBb0c5QztJQUNBO0lBQ0E7SUFyR21ELGdCQUFnQixDQUE4QjtJQUMvRCxpQkFBaUIsQ0FBK0I7SUFFM0Msb0JBQW9CLENBQTRDO0lBRTdELGVBQWUsQ0FBQztJQUNoRCxnQkFBZ0IsQ0FBbUI7SUFDUixXQUFXLENBQW1CO0lBQ2Qsa0JBQWtCLENBQUM7SUFDbEIsbUJBQW1CLENBQUM7SUFFbkIsYUFBYSxDQUFDO0lBQ1Qsa0JBQWtCLENBQUM7SUFDdEIsZUFBZSxDQUFDO0lBRWxCLGFBQWEsQ0FBQztJQUNULGtCQUFrQixDQUFDO0lBQ3JCLGdCQUFnQixDQUFDO0lBRTNCLGtCQUFrQixDQUFpQjtJQUN2QyxjQUFjLENBQWlCO0lBQzNELFdBQVcsQ0FBYTtJQUNjLGFBQWEsQ0FBYTtJQUMzQixRQUFRLENBQTJCO0lBRWxHLGNBQWMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUUvQyxvQkFBb0IsQ0FBUztJQUM3QixrQkFBa0IsQ0FBUztJQUMzQixXQUFXLENBQUM7SUFDWixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFdBQVcsQ0FBUztJQUNwQixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLDBCQUEwQixDQUF1QjtJQUNqRCxRQUFRLENBQVM7SUFDakIsT0FBTyxDQUFTO0lBQ2hCLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxDQUFPO0lBQ1gsZUFBZSxDQUF1QjtJQUN0QyxXQUFXLEdBQVcsSUFBSSxDQUFDO0lBQzNCLFdBQVcsQ0FBUztJQUVwQixLQUFLLEdBQWtCO1FBQ3JCLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1FBQzNCLE1BQU0sRUFBRSxJQUFJO0tBQ2IsQ0FBQztJQUVGLE9BQU8sR0FBa0I7UUFDdkIsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtLQUM1QixDQUFDO0lBRU0sb0JBQW9CLENBQWE7SUFDakMseUJBQXlCLENBQWE7SUFDdEMsVUFBVSxDQUE0QjtJQUN0QyxNQUFNLENBQUM7SUFDUCxZQUFZLENBQUM7SUFDYixZQUFZLENBQUM7SUFDYixhQUFhLENBQUM7SUFDZCxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLFlBQVksQ0FBa0I7SUFDOUIsdUJBQXVCLENBQWU7SUFDdEMsbUJBQW1CLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFdkQsYUFBYSxDQUFhO0lBQzFCLGNBQWMsQ0FBYTtJQUVuQyxJQUFzQyxtQkFBbUIsQ0FBQyxLQUFpQjtRQUN6RSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUEyQyx3QkFBd0IsQ0FBQyxLQUFpQjtRQUNuRixJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxZQUNFLE1BQXFCLEVBQ3JCLE9BQXdCLEVBQ3hCLFFBQW1CLEVBQ25CLGlCQUFvQyxFQUM1QixjQUFpQyxFQUNqQyxXQUF3QixFQUN4QixjQUE4QixFQUNBLEtBQWdDO1FBRXRFLEtBQUssQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFMekMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUl0QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDRGQUE0RjtRQUM1RiwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUN2RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxxQ0FBcUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsOEJBQThCLEtBQUssZ0NBQWdDLENBQUMsS0FBSyxDQUFDO0lBQzFHLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixNQUFNLFdBQVcsR0FDZixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU07WUFDdkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFM0IsT0FBTyxXQUFXLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLDBCQUEwQjtRQUM1QiwyRUFBMkU7UUFDM0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDN0MsT0FBTyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN0RixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLENBQ0wsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUMvRyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDakUsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLG9CQUFvQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsRUFBRTtZQUM5RCxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXZELE9BQU8sSUFBSSxNQUFNLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUM7U0FDcEU7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHNCQUFzQixDQUFDLEVBQUUsTUFBTSxFQUFFO1FBQy9CLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLGNBQWMsSUFBSSxNQUFNLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQ3pHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLENBQUM7UUFFM0MsZ0dBQWdHO1FBQ2hHLHdFQUF3RTtRQUN4RSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25HLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxZQUFZLENBQUMsV0FBZ0Q7UUFDM0QsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FBQyxRQUFnQjtRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsUUFBZ0I7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFFM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUU3RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzlCLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQy9CLFVBQVUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFxQjtRQUN0QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBRztRQUN0QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFRLEVBQUUsV0FBZ0I7UUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxFQUFFO1lBQ2hFLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxNQUFvRDtRQUNsRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDeEI7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLE1BQW9EO1FBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNILFdBQVc7UUFDVCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ25EO2FBQU07WUFDTCxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVSxFQUFFLE1BQWM7UUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVEsRUFBRSxNQUFxQjtRQUN6QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO1lBQ3ZDLElBQUksS0FBSyxHQUFRLEdBQUcsQ0FBQztZQUNyQixLQUFLLE1BQU0sUUFBUSxJQUFJLGdCQUFnQixFQUFFO2dCQUN2QyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3pFO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFhLEVBQUUsYUFBNEI7UUFDekQsSUFBSSxRQUFRLElBQUksUUFBUSxLQUFLLEtBQUssSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO1lBQ3BELFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0QyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3pCLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQzthQUN4RztpQkFBTTtnQkFDTCxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDakM7U0FDRjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBUSxFQUFFLE1BQXFCO1FBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNoQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEQ7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUM5QztTQUNGO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFRLEVBQUUsV0FBMEI7UUFDakQsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBUSxFQUFFLGNBQTZCO1FBQ3ZELE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQUc7UUFDcEIsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQjtZQUNyQixHQUFHLENBQUMsV0FBVztZQUNmLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7WUFDOUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQUcsRUFBRSxLQUFhO1FBQ2xDLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsRUFBRTtZQUN6RSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDakU7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFxQjtRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDcEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQXNCO1FBQzNDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQW9CO1FBQ3pDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQTZCO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQVUsRUFBRSxNQUFzQixFQUFFLEdBQVM7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFFN0IsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4RixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRyxFQUFFLFNBQVM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYTtRQUNuQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFRLEVBQUUsV0FBZ0I7UUFDNUMsSUFBSSxPQUFPLFdBQVcsQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFO1lBQzlDLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsQzthQUFNO1lBQ0wsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2hGO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxJQUFxQztRQUM5QyxJQUFJLElBQUksWUFBWSxNQUFNLEVBQUU7WUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQztTQUNuRTthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFXLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsVUFBVSxDQUFDLElBQXFDLEVBQUUsV0FBbUM7UUFDbkYsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUN6QzthQUFNO1lBQ0wsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBaUM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUMvQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUzRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxLQUFLLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUUxRSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUNuQztnQkFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7d0JBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7cUJBQzdDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFFcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNuRDtTQUNGO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxNQUFxQjtRQUN0QyxNQUFNLFFBQVEsR0FBbUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FDOUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUM5RSxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysd0RBQXdELE1BQU0sQ0FBQyxRQUFRLG9EQUFvRCxDQUM1SCxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUM5QixDQUFDO0lBRU0scUJBQXFCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ3ZELENBQUM7SUFFTSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUMxRCxDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRVMsNkJBQTZCLENBQUMsTUFBTTtRQUM1QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM1RyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVTLG1DQUFtQztRQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLEVBQUU7WUFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUVoRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVTLG1CQUFtQjtRQUMzQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQzVCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztZQUVyQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQzthQUNuRTtpQkFBTTtnQkFDTCxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO2FBQ2hFO1lBRUQsSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDL0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7YUFDN0I7U0FDRjtRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVPLGtCQUFrQixDQUFDLGdCQUE0QjtRQUNyRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsaUJBQWlCO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDO1FBRTFFLElBQUksV0FBVyxJQUFJLEdBQUcsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjthQUFNLElBQUksV0FBVyxHQUFHLEdBQUcsSUFBSSxXQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEQsSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUN2QjtRQUVELElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFTywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsR0FBRztRQUM1QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNoRixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQzNCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM3QyxJQUNFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxjQUFjO2dCQUNuQixDQUFDLElBQUksQ0FBQyxxQ0FBcUMsRUFDM0M7Z0JBQ0EsWUFBWSxFQUFFLENBQUM7YUFDaEI7WUFDRCxJQUNFLElBQUksQ0FBQyxxQ0FBcUM7Z0JBQzFDLElBQUksQ0FBQyxjQUFjO2dCQUNuQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFDbkQ7Z0JBQ0EsWUFBWSxFQUFFLENBQUM7YUFDaEI7U0FDRjtRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ25DLGlCQUFpQjtZQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFFBQW9CLEVBQUUsZ0JBQTRCO1FBQ3pFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUM7U0FDL0I7YUFBTTtZQUNMLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNsQyxRQUFRO2lCQUNMLEtBQUssRUFBRTtpQkFDUCxPQUFPLEVBQUU7aUJBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNkLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDeEI7Z0JBQ0QsS0FBSyxFQUFFLENBQUM7WUFDVixDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLGtCQUFrQixDQUFDLGdCQUE0QjtRQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3hHLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDWixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ25CLE1BQU0sY0FBYyxHQUFHO3dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZO3dCQUNwQixRQUFRLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQ3JDLElBQUksRUFBRSxDQUFDO3FCQUNSLENBQUM7b0JBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNyRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3pDLENBQUMsQ0FBQyxDQUNILENBQUM7aUJBQ0g7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBcUI7UUFDcEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ2pELFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztTQUNuRTtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDL0MsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztTQUNoRTtRQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDdEgsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLE9BQU8sR0FBdUIsSUFBSSxDQUFDO1FBRXZDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQztTQUNsRDthQUFNO1lBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ3RGO1FBRUQsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3pHO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBdUIsRUFBRSxXQUF1QjtRQUN2RSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFFdkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM3QixNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUN0QyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsSUFBSSxJQUFJLFdBQVcsS0FBSyxVQUFVLENBQUMsS0FBSyxDQUNsRixDQUFDO1lBQ0YsZUFBZSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RGLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN2QjtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7UUFFRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUNoQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWE7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVPLFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBb0I7UUFDaEQsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7aUJBQzlCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztpQkFDOUI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzswRUE5MUJVLGdCQUFnQixvVEF1R0wsZ0JBQWdCOzZEQXZHM0IsZ0JBQWdCO3dDQUNiLDJCQUEyQjt3Q0FDM0IsNEJBQTRCO3dDQUV6Qiw4QkFBOEI7Ozs7Ozs7bUNBRVQsVUFBVTs7MkJBRXJDLGdCQUFnQjttQ0FDTyxVQUFVO21DQUNULFVBQVU7bUNBRVQsVUFBVTttQ0FDTCxVQUFVO21DQUNiLFVBQVU7bUNBRVosVUFBVTttQ0FDTCxVQUFVO21DQUNaLFVBQVU7O29DQUtiLFVBQVU7MkJBQ25DLHdCQUF3Qjs7O29DQUpTLFVBQVU7b0NBQ2QsVUFBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhDQXZCdkMsQ0FBQyxhQUFhLENBQUM7WUN4RzVCLDhCQUE4QjtZQUM1QixpRUFzQk0sb0RBQUEsb0RBQUE7WUF1QlIsaUJBQU07WUFDTixtRkFFZSxzR0FBQSxvREFBQSx1R0FBQSx5R0FBQTtZQWt1QmYsbUNBQTRFO1lBRTVFLHFIQU9jLHdHQUFBLHdHQUFBLHdHQUFBLHdHQUFBLHdHQUFBLHdHQUFBLCtGQUFBO1lBa0pkLHlDQU1DLGFBQUE7WUFDK0IsYUFBeUI7WUFBQSxpQkFBSSxFQUFBOzs7WUFsN0J4RCxjQUFzRTtZQUF0RSxtR0FBc0U7WUFzQnBELGNBQTRDO1lBQTVDLHFFQUE0QztZQVkzRCxjQUF5QztZQUF6QyxrRUFBeUM7WUFVbEMsY0FBaUI7WUFBakIsb0NBQWlCLGlCQUFBO1lBeUM3QixlQUFxQjtZQUFyQiwwQ0FBcUI7WUEyckJQLGVBQXFCO1lBQXJCLHVDQUFxQiw2QkFBQTtZQThJbkMsZ0JBQXlCO1lBQXpCLDhDQUF5QjtZQWUxQixjQUEyQjtZQUEzQiw2Q0FBMkIsaUNBQUEsaUNBQUEscUJBQUE7WUFLRyxlQUF5QjtZQUF6Qiw2Q0FBeUI7OztpRkQzMEI1QyxnQkFBZ0I7Y0FMNUIsU0FBUzsyQkFDRSxVQUFVLGFBRVQsQ0FBQyxhQUFhLENBQUM7O3NCQXlHdkIsUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxnQkFBZ0I7cUJBdEd1QixnQkFBZ0I7a0JBQTVFLFlBQVk7bUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ2YsaUJBQWlCO2tCQUE1RCxZQUFZO21CQUFDLDRCQUE0QjtZQUVPLG9CQUFvQjtrQkFBcEUsZUFBZTttQkFBQyw4QkFBOEI7WUFFSyxlQUFlO2tCQUFsRSxTQUFTO21CQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM5QixnQkFBZ0I7a0JBQW5DLFNBQVM7bUJBQUMsT0FBTztZQUM2QixXQUFXO2tCQUF6RCxTQUFTO21CQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNrQixrQkFBa0I7a0JBQWhGLFNBQVM7bUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0csbUJBQW1CO2tCQUFsRixTQUFTO21CQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUVHLGFBQWE7a0JBQTdFLFNBQVM7bUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ08sa0JBQWtCO2tCQUF2RixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0QsZUFBZTtrQkFBakYsU0FBUzttQkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUVBLGFBQWE7a0JBQTdFLFNBQVM7bUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ08sa0JBQWtCO2tCQUF2RixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0EsZ0JBQWdCO2tCQUFuRixTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBRVIsa0JBQWtCO2tCQUEzRSxZQUFZO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNGLGNBQWM7a0JBQW5FLFlBQVk7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzFCLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUN3QyxhQUFhO2tCQUE1RSxTQUFTO21CQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNDLFFBQVE7a0JBQXRFLFNBQVM7bUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBaURoQixtQkFBbUI7a0JBQXhELFNBQVM7bUJBQUMscUJBQXFCO1lBU1csd0JBQXdCO2tCQUFsRSxTQUFTO21CQUFDLDBCQUEwQjs7a0ZBbEYxQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLW5vdGlmaWNhdGlvbi9wby1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uLCBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbW9kYWwnO1xuaW1wb3J0IHsgUG9Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBvcHVwL3BvLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9QYWdlU2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi9wby1wYWdlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uIH0gZnJvbSAnLi9lbnVtcy9wby10YWJsZS1yb3ctdGVtcGxhdGUtYXJyb3ctZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQmFzZUNvbXBvbmVudCwgUXVlcnlQYXJhbXNUeXBlIH0gZnJvbSAnLi9wby10YWJsZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1yb3ctdGVtcGxhdGUvcG8tdGFibGUtcm93LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlU3VidGl0bGVDb2x1bW4gfSBmcm9tICcuL3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlci9wby10YWJsZS1zdWJ0aXRsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IElDT05TX0RJQ1RJT05BUlksIFBvSWNvbkRpY3Rpb25hcnkgfSBmcm9tICcuLi9wby1pY29uJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gVGFibGUgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYmFzaWMvc2FtcGxlLXBvLXRhYmxlLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtbGFic1wiIHRpdGxlPVwiUE8gVGFibGUgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS13aXRoLWFwaVwiIHRpdGxlPVwiUE8gVGFibGUgdXNpbmcgQVBJXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpL3NhbXBsZS1wby10YWJsZS13aXRoLWFwaS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLXRyYW5zcG9ydFwiIHRpdGxlPVwiUE8gVGFibGUgLSBUcmFuc3BvcnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYWlyZmFyZVwiIHRpdGxlPVwiUE8gVGFibGUgLSBBaXJmYXJlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWNvbXBvbmVudHNcIiB0aXRsZT1cIlBPIFRhYmxlIC0gUG8gRmllbGQgQ29tcG9uZW50c1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5lbnVtLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LmNzc1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWhlcm9lc1wiIHRpdGxlPVwiUE8gVGFibGUgLSBIZXJvZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWhlcm9lcy9zYW1wbGUtcG8tdGFibGUtaGVyb2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtZHJhZ2dhYmxlXCIgdGl0bGU9XCJQTyBUYWJsZSBEcmFnIGFuZCBEcm9wXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvRGF0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBvVGFibGVDb21wb25lbnQgZXh0ZW5kcyBQb1RhYmxlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlUm93VGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlUm93VGVtcGxhdGU6IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNlbGxUZW1wbGF0ZTogUG9UYWJsZUNlbGxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSkgdGFibGVDb2x1bW5UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBWaWV3Q2hpbGQoJ25vQ29sdW1uc0hlYWRlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBub0NvbHVtbnNIZWFkZXI7XG4gIEBWaWV3Q2hpbGQoJ3BvcHVwJykgcG9Qb3B1cENvbXBvbmVudDogUG9Qb3B1cENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChQb01vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBtb2RhbERlbGV0ZTogUG9Nb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFibGVGb290ZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVGb290ZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZVdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVXcmFwcGVyRWxlbWVudDtcblxuICBAVmlld0NoaWxkKCd0YWJsZVRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlVGVtcGxhdGU7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlVmlydHVhbFNjcm9sbCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVZpcnR1YWxTY3JvbGw7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlU2Nyb2xsYWJsZScsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVNjcm9sbGFibGU7XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5NYW5hZ2VyO1xuICBAVmlld0NoaWxkKCdjb2x1bW5CYXRjaEFjdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQmF0Y2hBY3Rpb25zO1xuICBAVmlld0NoaWxkKCdjb2x1bW5BY3Rpb25MZWZ0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbkFjdGlvbkxlZnQ7XG5cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNJY29uRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNFbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVySW5wdXQnKSBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9TZWFyY2hJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHBvU2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgcG9Ob3RpZmljYXRpb24gPSBpbmplY3QoUG9Ob3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICBoZWlnaHRUYWJsZUNvbnRhaW5lcjogbnVtYmVyO1xuICBoZWlnaHRUYWJsZVZpcnR1YWw6IG51bWJlcjtcbiAgcG9wdXBUYXJnZXQ7XG4gIHRhYmxlT3BhY2l0eTogbnVtYmVyID0gMDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcbiAgaXRlbVNpemU6IG51bWJlciA9IDQ4O1xuICBsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZDogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHRhZ0NvbG9yOiBzdHJpbmc7XG4gIGlkUmFkaW86IHN0cmluZztcbiAgaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gIEpTT046IEpTT047XG4gIG5ld09yZGVyQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHNpemVMb2FkaW5nOiBzdHJpbmcgPSAnc20nO1xuICBoZWFkZXJXaWR0aDogbnVtYmVyO1xuXG4gIGNsb3NlOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgIH0sXG4gICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMuY2FuY2VsLFxuICAgIGRhbmdlcjogdHJ1ZVxuICB9O1xuXG4gIGNvbmZpcm06IFBvTW9kYWxBY3Rpb24gPSB7XG4gICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5kZWxldGVcbiAgfTtcblxuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX2ljb25Ub2tlbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSBkaWZmZXI7XG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0O1xuICBwcml2YXRlIGhlYWRlckhlaWdodDtcbiAgcHJpdmF0ZSB0aW1lb3V0UmVzaXplO1xuICBwcml2YXRlIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgc2Nyb2xsRXZlbnQkOiBPYnNlcnZhYmxlPGFueT47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25TZXJ2aWNlOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJUYXJnZXQnKSBzZXQgY29sdW1uTWFuYWdlclRhcmdldCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0O1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlclRhcmdldEZpeGVkJykgc2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldEZpeGVkO1xuICB9XG5cbiAgZ2V0IGljb25OYW1lTGliKCkge1xuICAgIHJldHVybiB0aGlzLl9pY29uVG9rZW4uTkFNRV9MSUI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwb0RhdGU6IFBvRGF0ZVNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgZGVmYXVsdFNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUNPTlNfRElDVElPTkFSWSkgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlLCBwb0xhbmd1YWdlU2VydmljZSwgZGVmYXVsdFNlcnZpY2UpO1xuICAgIHRoaXMuSlNPTiA9IEpTT047XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcblxuICAgIC8vIFRPRE86ICM1NTUwIGFvIHJlbW92ZXIgZXN0ZSBsaXN0ZW5lciwgbm8gcG9ydGFsLCBxdWFuZG8gYXMgY29sdW5hcyBmb3JlbSBmaXhhcyBuw6NvIHNvZnJlbVxuICAgIC8vIGFsdGVyYcOnw6NvIGRlIGxhcmd1cmEsIHBvaXMgbyBuZ0RvQ2hlY2sgbsOjbyDDqSBleGVjdXRhZG8uXG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsICgpID0+IHt9KTtcblxuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faWNvblRva2VuID0gdmFsdWUgPz8gUG9JY29uRGljdGlvbmFyeTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGU/LnRhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbiA9PT0gUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24uUmlnaHQ7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnQoKSB7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPVxuICAgICAgdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggK1xuICAgICAgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICtcbiAgICAgICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgK1xuICAgICAgKCF0aGlzLmhpZGVEZXRhaWwgJiYgdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgIT09IHVuZGVmaW5lZCA/IDEgOiAwKSArXG4gICAgICB0aGlzLmNvdW50RXh0cmFDb2x1bW5zKCk7XG5cbiAgICByZXR1cm4gY29sdW1uQ291bnQgfHwgMTtcbiAgfVxuXG4gIGdldCBjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbCgpIHtcbiAgICAvLyBjYXNvIHRpdmVyIGHDp8O1ZXMgc2Vyw6EgdXRpbGl6YWRvIGEgc3VhIGNvbHVuYSBwYXJhIGV4aWJpciBvIGNvbHVtbk1hbmFnZXJcbiAgICByZXR1cm4gdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggKyAxICsgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICsgKHRoaXMuc2VsZWN0YWJsZSA/IDEgOiAwKTtcbiAgfVxuXG4gIGdldCBkZXRhaWxIaWRlU2VsZWN0KCkge1xuICAgIGNvbnN0IG1hc3RlckRldGFpbCA9IHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsO1xuICAgIHJldHVybiBtYXN0ZXJEZXRhaWwgJiYgbWFzdGVyRGV0YWlsLmRldGFpbCA/IG1hc3RlckRldGFpbC5kZXRhaWwuaGlkZVNlbGVjdCA6IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGhhc1Zpc2libGVBY3Rpb25zKCkge1xuICAgIHJldHVybiAhIXRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGZpcnN0QWN0aW9uKCk6IFBvVGFibGVBY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBY3Rpb25zICYmIHRoaXMudmlzaWJsZUFjdGlvbnNbMF07XG4gIH1cblxuICBnZXQgaGFzRm9vdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc0l0ZW1zICYmIHRoaXMuaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucztcbiAgfVxuXG4gIGdldCBoYXNNYXN0ZXJEZXRhaWxDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaGFzTWFpbkNvbHVtbnMgJiYgdGhpcy5oYXNJdGVtcyAmJiAhdGhpcy5oaWRlRGV0YWlsICYmICEhKHRoaXMuY29sdW1uTWFzdGVyRGV0YWlsIHx8IHRoaXMuaGFzUm93VGVtcGxhdGUpXG4gICAgKTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRhYmxlUm93VGVtcGxhdGU7XG4gIH1cblxuICBnZXQgaGFzU2VsZWN0YWJsZUNvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlICYmIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNNYWluQ29sdW1ucztcbiAgfVxuXG4gIGdldCBoYXNWYWxpZENvbHVtbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52YWxpZENvbHVtbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGhhc1Zpc2libGVTdWJ0aXRsZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VidGl0bGVDb2x1bW5zLnNvbWUoY29sdW1uID0+IGNvbHVtbi52aXNpYmxlICE9PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgaXNTaW5nbGVBY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgZ2V0IGlzRHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRyYWdnYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW52ZXJzZU9mVHJhbnNsYXRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudmlld1BvcnQgfHwgIXRoaXMudmlld1BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXSkge1xuICAgICAgcmV0dXJuICctMHB4JztcbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnZpZXdQb3J0WydfcmVuZGVyZWRDb250ZW50T2Zmc2V0J107XG5cbiAgICByZXR1cm4gYC0ke29mZnNldH1weGA7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlkUmFkaW8gPSBgcG8tcmFkaW8tJHt1dWlkKCl9YDtcbiAgfVxuXG4gIGNoYW5nZUhlYWRlcldpZHRoKCkge1xuICAgIGlmICh0aGlzLm5vQ29sdW1uc0hlYWRlcikge1xuICAgICAgdGhpcy5oZWFkZXJXaWR0aCA9IHRoaXMubm9Db2x1bW5zSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5nZUhlYWRlcldpZHRoKCk7XG4gICAgdGhpcy5jaGFuZ2VTaXplTG9hZGluZygpO1xuICAgIHRoaXMuYXBwbHlGaXhlZENvbHVtbnMoKTtcbiAgfVxuXG4gIHNob3dNb3JlSW5maW5pdGVTY3JvbGwoeyB0YXJnZXQgfSk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gdGFyZ2V0Lm9mZnNldEhlaWdodCArIHRhcmdldC5zY3JvbGxUb3A7XG4gICAgaWYgKCF0aGlzLnNob3dNb3JlRGlzYWJsZWQgJiYgc2Nyb2xsUG9zaXRpb24gPj0gdGFyZ2V0LnNjcm9sbEhlaWdodCAqICh0aGlzLmluZmluaXRlU2Nyb2xsRGlzdGFuY2UgLyAxMTApKSB7XG4gICAgICB0aGlzLm9uU2hvd01vcmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy5hcHBseUZpeGVkQ29sdW1ucygpO1xuICAgIHRoaXMuY2hlY2tDaGFuZ2VzSXRlbXMoKTtcbiAgICB0aGlzLnZlcmlmeUNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKCk7XG5cbiAgICAvLyBQZXJtaXRlIHF1ZSBvcyBjYWJlw6dhbGhvcyBzZWphbSBjYWxjdWxhZG9zIG5hIHByaW1laXJhIHZleiBxdWUgbyBjb21wb25lbnRlIHRvcm5hLXNlIHZpc8OtdmVsLFxuICAgIC8vIGV2aXRhbmRvIGNvbSBpc3NvLCBwcm9ibGVtYXMgY29tIFRhYnMgb3UgRGl2cyBxdWUgaW5pY2llbSBlc2NvbmRpZGFzLlxuICAgIGlmICh0aGlzLnRhYmxlV3JhcHBlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggJiYgIXRoaXMudmlzaWJsZUVsZW1lbnQgJiYgdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgICAgdGhpcy5jaGVja0luZmluaXRlU2Nyb2xsKCk7XG4gICAgICB0aGlzLnZpc2libGVFbGVtZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZT8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgcmVhbGl6YXIgYnVzY2Egbm8gc2VydmnDp28gZGUgZGFkb3MgcG9kZW5kbyBpbmZvcm1hciBmaWx0cm9zIGUgY29tIG8gcmV0b3JubywgYXR1YWxpemEgYSB0YWJlbGEuXG4gICAqXG4gICAqIENhc28gbsOjbyBzZWphIGluZm9ybWFkbyBwYXLDom1ldHJvLCBuYWRhIHNlcsOhIGFkaWNpb25hZG8gYW8gR0VULCBjb25mb3JtZSBhYmFpeG86XG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwXG4gICAqIGBgYFxuICAgKiA+IE9iczogb3MgcGFyw6JtZXRyb3MgYHBhZ2VgIGUgYHBhZ2VTaXplYCBzZW1wcmUgc2Vyw6NvIGNoYW1hZG9zIGluZGVwZW5kZW50ZSBkZSBzZXIgZW52aWFkb3Mgb3V0cm9zIHBhcsOibWV0cm9zLlxuICAgKlxuICAgKiBDYXNvIHNlamFtIGluZm9ybWFkb3Mgb3MgcGFyw6JtZXRyb3MgYHsgbmFtZTogJ0pPSE4nLCBhZ2U6ICcyMycgfWAsIHRvZG9zIHNlcsOjbyBhZGljaW9uYWRvcyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTAmbmFtZT1KT0hOJmFnZT0yM1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHsgeyBrZXk6IHZhbHVlIH0gfSBxdWVyeVBhcmFtcyBGb3JtYXRvIGRvIG9iamV0byBhIHNlciBlbnZpYWRvLlxuICAgKiA+IFBvZGUgc2VyIHV0aWxpemFkYSBxdWFscXVlciBzdHJpbmcgY29tbyBrZXksIGUgcXVhbHF1ZXIgc3RyaW5nIG91IG51bWJlciBjb21vIHZhbHVlLlxuICAgKi9cbiAgYXBwbHlGaWx0ZXJzKHF1ZXJ5UGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBRdWVyeVBhcmFtc1R5cGUgfSkge1xuICAgIHRoaXMucGFnZSA9IDE7XG4gICAgdGhpcy5pbml0aWFsaXplRGF0YShxdWVyeVBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgY29sdW1ucyBwb3NzdWVtIGEgcHJvcHJpZWRhZGUgd2lkdGguXG4gICAqL1xuICBhcHBseUZpeGVkQ29sdW1ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY29sdW1ucy5zb21lKGNvbHVtbiA9PiAhY29sdW1uLndpZHRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBjb2xhcHNhIHVtYSBsaW5oYSBjb20gZGV0YWxoZSBxdWFuZG8gZXhlY3V0YWRhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfSByb3dJbmRleCDDjW5kaWNlIGRhIGxpbmhhIHF1ZSBzZXLDoSBjb2xhcHNhZGEuXG4gICAqID4gQW8gcmVvcmRlbmFyIG9zIGRhZG9zIGRhIHRhYmVsYSwgbyB2YWxvciBjb250aWRvIG5lc3RlIMOtbmRpY2Ugc2Vyw6EgYWx0ZXJhZG8gY29uZm9ybWUgYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIGNvbGxhcHNlKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBleHBhbmRlIHVtYSBsaW5oYSBjb20gZGV0YWxoZSBxdWFuZG8gZXhlY3V0YWRhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfSByb3dJbmRleCDDjW5kaWNlIGRhIGxpbmhhIHF1ZSBzZXLDoSBleHBhbmRpZGEuXG4gICAqID4gQW8gcmVvcmRlbmFyIG9zIGRhZG9zIGRhIHRhYmVsYSwgbyB2YWxvciBjb250aWRvIG5lc3RlIMOtbmRpY2Ugc2Vyw6EgYWx0ZXJhZG8gY29uZm9ybWUgYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIGV4cGFuZChyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRTaG93RGV0YWlsKHJvd0luZGV4LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGFzIGxpbmhhcyBkbyBgcG8tdGFibGVgIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uJHNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGFzIGxpbmhhcyBkbyBgcG8tdGFibGVgIHF1ZSBuw6NvIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRVbnNlbGVjdGVkUm93cygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc21hcmNhIGFzIGxpbmhhcyBxdWUgZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIHVuc2VsZWN0Um93cygpIHtcbiAgICBjb25zdCBjb2x1bW5EZXRhaWwgPSB0aGlzLm5hbWVDb2x1bW5EZXRhaWw7XG5cbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBkZXRhaWxJdGVtcyA9IGNvbHVtbkRldGFpbCA/IGl0ZW1bY29sdW1uRGV0YWlsXSA6IG51bGw7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbEl0ZW1zKSkge1xuICAgICAgICBkZXRhaWxJdGVtcy5mb3JFYWNoKGRldGFpbEl0ZW0gPT4ge1xuICAgICAgICAgIGRldGFpbEl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpdGVtLiRzZWxlY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgfVxuXG4gIGNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmRpc2FibGVkID8gY29sdW1uLmRpc2FibGVkKHJvdykgOiBmYWxzZTtcbiAgfVxuXG4gIGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykge1xuICAgIHJldHVybiByb3dbdGhpcy5uYW1lQ29sdW1uRGV0YWlsXSAmJiByb3dbdGhpcy5uYW1lQ29sdW1uRGV0YWlsXS5sZW5ndGg7XG4gIH1cblxuICBleGVjdXRlVGFibGVBY3Rpb24ocm93OiBhbnksIHRhYmxlQWN0aW9uOiBhbnkpIHtcbiAgICBpZiAoIXJvdy5kaXNhYmxlZCAmJiAhdGhpcy52YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdywgdGFibGVBY3Rpb24pKSB7XG4gICAgICB0YWJsZUFjdGlvbi5hY3Rpb24ocm93KTtcbiAgICAgIHRoaXMudG9nZ2xlUm93QWN0aW9uKHJvdyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc21hcmNhIHVtYSBsaW5oYSBxdWUgZXN0w6Egc2VsZWNpb25hZGEuXG4gICAqL1xuICB1bnNlbGVjdFJvd0l0ZW0oaXRlbWZuOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgKChpdGVtKSA9PiBib29sZWFuKSkge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0KGl0ZW1mbiwgZmFsc2UpO1xuXG4gICAgaWYgKHRoaXMuaXRlbXMuZXZlcnkoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjaW9uYSB1bWEgbGluaGEgZG8gJ3BvLXRhYmxlJy5cbiAgICovXG4gIHNlbGVjdFJvd0l0ZW0oaXRlbWZuOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgKChpdGVtKSA9PiBib29sZWFuKSkge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0KGl0ZW1mbiwgdHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+IGl0ZW0uJHNlbGVjdGVkKSkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBlbGEgZXhjbHVzw6NvIGRlIGl0ZW5zIGVtIGxvdGUuXG4gICAqIENhc28gYSB0YWJlbGEgZXN0ZWphIGV4ZWN1dGFuZG8gYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlLWRlbGV0ZWAsIHNlcsOhIG5lY2Vzc8OhcmlvIGV4Y2x1aXIgMSBpdGVtIHBvciB2ZXouXG4gICAqXG4gICAqIEFvIHV0aWxpemFyIGBwLXNlcnZpY2UtZGVsZXRlYCBtYXMgc2VtIGEgcHJvcHJpZWRhZGUgYHAtc2VydmljZS1hcGlgLCBzZXLDoSByZXNwb25zYWJpbGlkYWRlIGRvIHVzdcOhcmlvIG8gdHJhdGFtZW50b1xuICAgKiBhcMOzcyBhIHJlcXVpc2nDp8OjbyBERUxFVEUgc2VyIGV4ZWN1dGFkYS5cbiAgICpcbiAgICogQ2FzbyBhIHRhYmVsYSB1dGlsaXplIGBwLWhlaWdodGAgZSBlc3RlamEgc2VtIHNlcnZpw6dvLCDDqSBuZWNlc3PDoXJpbyBhIHJlYXRyaWJ1acOnw6NvIGRvcyBpdGVucyB1dGlsaXphbmRvIG8gZXZlbnRvIGAocC1kZWxldGUtaXRlbXMpYCwgcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKjxwby10YWJsZVxuICAgKiAgKHAtZGVsZXRlLWl0ZW1zKT1cIml0ZW1zID0gJGV2ZW50XCJcbiAgICogPlxuICAgKjwvcG8tdGFibGU+XG4gICAqIGBgYFxuICAgKi9cbiAgZGVsZXRlSXRlbXMoKSB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4udGhpcy5pdGVtc107XG4gICAgY29uc3QgbmV3SXRlbXNGaWx0ZXJlZCA9IFsuLi5uZXdJdGVtc10uZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uJHNlbGVjdGVkKTtcblxuICAgIGlmICghdGhpcy5zZXJ2aWNlRGVsZXRlQXBpKSB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zTG9jYWwobmV3SXRlbXMsIG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zU2VydmljZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcpIHtcbiAgICBpZiAoIWZvcm1hdCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgfVxuXG4gIGdldENlbGxEYXRhKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pOiBhbnkge1xuICAgIGNvbnN0IGFycmF5UHJvcGVydHkgPSBjb2x1bW4ucHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICBpZiAoYXJyYXlQcm9wZXJ0eS5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBuZXN0ZWRQcm9wZXJ0aWVzID0gYXJyYXlQcm9wZXJ0eTtcbiAgICAgIGxldCB2YWx1ZTogYW55ID0gcm93O1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBuZXN0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVbcHJvcGVydHldIHx8IHZhbHVlW3Byb3BlcnR5XSA9PT0gMCA/IHZhbHVlW3Byb3BlcnR5XSA6ICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcm93W2NvbHVtbi5wcm9wZXJ0eV07XG4gICAgfVxuICB9XG5cbiAgZ2V0Qm9vbGVhbkxhYmVsKHJvd1ZhbHVlOiBhbnksIGNvbHVtbkJvb2xlYW46IFBvVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGlmIChyb3dWYWx1ZSB8fCByb3dWYWx1ZSA9PT0gZmFsc2UgfHwgcm93VmFsdWUgPT09IDApIHtcbiAgICAgIHJvd1ZhbHVlID0gY29udmVydFRvQm9vbGVhbihyb3dWYWx1ZSk7XG5cbiAgICAgIGlmIChjb2x1bW5Cb29sZWFuLmJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gY29sdW1uQm9vbGVhbi5ib29sZWFuLnRydWVMYWJlbCB8fCAnU2ltJyA6IGNvbHVtbkJvb2xlYW4uYm9vbGVhbi5mYWxzZUxhYmVsIHx8ICdOw6NvJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByb3dWYWx1ZSA/ICdTaW0nIDogJ07Do28nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dWYWx1ZTtcbiAgfVxuXG4gIGdldENvbHVtbkljb25zKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBjb25zdCByb3dJY29ucyA9IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pO1xuXG4gICAgaWYgKGNvbHVtbi5pY29ucykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93SWNvbnMpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnMsIGNvbHVtbi5pY29ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm93SWNvbnM7XG4gIH1cblxuICBnZXRDb2x1bW5MYWJlbChyb3c6IGFueSwgY29sdW1uTGFiZWw6IFBvVGFibGVDb2x1bW4pOiBQb1RhYmxlQ29sdW1uTGFiZWwge1xuICAgIHJldHVybiBjb2x1bW5MYWJlbC5sYWJlbHMuZmluZChsYWJlbEl0ZW0gPT4gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbkxhYmVsKSA9PT0gbGFiZWxJdGVtLnZhbHVlKTtcbiAgfVxuXG4gIGdldFN1YnRpdGxlQ29sdW1uKHJvdzogYW55LCBzdWJ0aXRsZUNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVTdWJ0aXRsZUNvbHVtbiB7XG4gICAgcmV0dXJuIHN1YnRpdGxlQ29sdW1uLnN1YnRpdGxlcy5maW5kKHN1YnRpdGxlSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgc3VidGl0bGVDb2x1bW4pID09PSBzdWJ0aXRsZUl0ZW0udmFsdWUpO1xuICB9XG5cbiAgaXNTaG93TWFzdGVyRGV0YWlsKHJvdykge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5oaWRlRGV0YWlsICYmXG4gICAgICB0aGlzLm5hbWVDb2x1bW5EZXRhaWwgJiZcbiAgICAgIHJvdy4kc2hvd0RldGFpbCAmJlxuICAgICAgdGhpcy5jb250YWluc01hc3RlckRldGFpbChyb3cpICYmXG4gICAgICAhdGhpcy5oYXNSb3dUZW1wbGF0ZVxuICAgICk7XG4gIH1cblxuICBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy50YWJsZVJvd1RlbXBsYXRlICYmIHRoaXMudGFibGVSb3dUZW1wbGF0ZS5wb1RhYmxlUm93VGVtcGxhdGVTaG93KSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cocm93LCBpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvbkNsaWNrTGluayhldmVudCwgcm93LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbikpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlVmlzaWJsZUNvbHVtbnMoY29sdW1uczogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuY2hhbmdlVmlzaWJsZUNvbHVtbnMuZW1pdChjb2x1bW5zKTtcbiAgfVxuXG4gIG9uQ29sdW1uUmVzdG9yZU1hbmFnZXIodmFsdWU6IEFycmF5PFN0cmluZz4pIHtcbiAgICB0aGlzLmNvbHVtblJlc3RvcmVNYW5hZ2VyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25WaXNpYmxlQ29sdW1uc0NoYW5nZShjb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPikge1xuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b29sdGlwTW91c2VFbnRlcihldmVudDogYW55LCBjb2x1bW4/OiBQb1RhYmxlQ29sdW1uLCByb3c/OiBhbnkpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKGV2ZW50LnRhcmdldC5vZmZzZXRXaWR0aCA8IGV2ZW50LnRhcmdldC5zY3JvbGxXaWR0aCAmJiBldmVudC50YXJnZXQuaW5uZXJUZXh0LnRyaW0oKSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gZXZlbnQudGFyZ2V0LmlubmVyVGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbikge1xuICAgICAgdGhpcy5jaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdyk7XG4gICAgfVxuICB9XG5cbiAgdG9vbHRpcE1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRvZ2dsZVBvcHVwKHJvdywgdGFyZ2V0UmVmKSB7XG4gICAgdGhpcy5wb3B1cFRhcmdldCA9IHRhcmdldFJlZjtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMucG9Qb3B1cENvbXBvbmVudC50b2dnbGUocm93KTtcbiAgfVxuXG4gIHRyYWNrQnkoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHZhbGlkYXRlVGFibGVBY3Rpb24ocm93OiBhbnksIHRhYmxlQWN0aW9uOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHRhYmxlQWN0aW9uLmRpc2FibGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQocm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRhYmxlQWN0aW9uLmRpc2FibGVkO1xuICAgIH1cbiAgfVxuXG4gIG9uT3BlbkNvbHVtbk1hbmFnZXIoKSB7XG4gICAgdGhpcy5sYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZCA9IFsuLi50aGlzLmNvbHVtbnNdO1xuICB9XG5cbiAgb25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKGl0ZW1zOiBBcnJheTxhbnk+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5KSB7XG4gICAgICB0aGlzLnNvcnRBcnJheSh0aGlzLnNvcnRlZENvbHVtbi5wcm9wZXJ0eSwgdGhpcy5zb3J0ZWRDb2x1bW4uYXNjZW5kaW5nLCBpdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IGl0ZW1zO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSByZW1vdmUgdW0gaXRlbSBkYSB0YWJlbGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB8IHsga2V5OiB2YWx1ZSB9IH0gaXRlbSDDjW5kaWNlIGRhIGxpbmhhIG91IG8gaXRlbSBxdWUgc2Vyw6EgcmVtb3ZpZG8uXG4gICAqID4gQW8gcmVtb3ZlciBvIGl0ZW0sIGEgbGluaGEgcXVlIG8gcmVwcmVzZW50YSBzZXLDoSBleGNsdcOtZGEgZGEgdGFiZWxhLlxuICAgKi9cbiAgcmVtb3ZlSXRlbShpdGVtOiBudW1iZXIgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihmaWx0ZXJJdGVtID0+IGZpbHRlckl0ZW0gIT09IGl0ZW0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gaXRlbTtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgYXR1YWxpemEgdW0gaXRlbSBkYSB0YWJlbGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB8IHsga2V5OiB2YWx1ZSB9IH0gaXRlbSDDjW5kaWNlIGRhIGxpbmhhIG91IG8gaXRlbSBxdWUgc2Vyw6EgYXR1YWxpemFkby5cbiAgICogQHBhcmFtIHsgeyBrZXk6IHZhbHVlIH0gfSB1cGRhdGVkSXRlbSBJdGVtIHF1ZSBmb2kgYXR1YWxpemFkby5cbiAgICogPiBBbyBhdHVhbGl6YXIgbyBpdGVtLCBhIGluZm9ybWHDp8OjbyBzZXLDoSBhbHRlcmFkYSBuYSB0YWJlbGEuXG4gICAqL1xuICB1cGRhdGVJdGVtKGl0ZW06IG51bWJlciB8IHsgW2tleTogc3RyaW5nXTogYW55IH0sIHVwZGF0ZWRJdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaXRlbSwgMSwgdXBkYXRlZEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KGluZGV4SXRlbSA9PiBpbmRleEl0ZW0gPT09IGl0ZW0pO1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEsIHVwZGF0ZWRJdGVtKTtcbiAgICB9XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxBcnJheTxzdHJpbmc+Pikge1xuICAgIGlmICghdGhpcy5tYWluQ29sdW1uc1tldmVudC5jdXJyZW50SW5kZXhdLmZpeGVkKSB7XG4gICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5tYWluQ29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcblxuICAgICAgaWYgKHRoaXMuaGlkZUNvbHVtbnNNYW5hZ2VyID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucyA9IHRoaXMubWFpbkNvbHVtbnM7XG4gICAgICAgIGNvbnN0IGRldGFpbCA9IHRoaXMuY29sdW1ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb3BlcnR5ID09PSAnZGV0YWlsJylbMF07XG5cbiAgICAgICAgaWYgKGRldGFpbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5uZXdPcmRlckNvbHVtbnMucHVzaChkZXRhaWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb2x1bW5zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoIWl0ZW0udmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5uZXdPcmRlckNvbHVtbnMuc3BsaWNlKGluZGV4LCAwLCBpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLm5ld09yZGVyQ29sdW1ucztcblxuICAgICAgICB0aGlzLm9uVmlzaWJsZUNvbHVtbnNDaGFuZ2UodGhpcy5uZXdPcmRlckNvbHVtbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZShjb2x1bW46IFBvVGFibGVDb2x1bW4pOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZTogUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlID0gdGhpcy50YWJsZUNvbHVtblRlbXBsYXRlcz8uZmluZChcbiAgICAgIHRhYmxlQ29sdW1uVGVtcGxhdGUgPT4gdGFibGVDb2x1bW5UZW1wbGF0ZS50YXJnZXRQcm9wZXJ0eSA9PT0gY29sdW1uLnByb3BlcnR5XG4gICAgKTtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBOw6NvIGZvaSBwb3Nzw612ZWwgZW5jb250cmFyIG8gdGVtcGxhdGUgcGFyYSBhIGNvbHVuYTogJHtjb2x1bW4ucHJvcGVydHl9LCBwb3IgZ2VudGlsZXphIGluZm9ybWUgYSBwcm9wcmllZGFkZSBbcC1wcm9wZXJ0eV1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRXaWR0aENvbHVtbk1hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTWFuYWdlcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5XaWR0aEFjdGlvbnNMZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkFjdGlvbkxlZnQ/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBwdWJsaWMgaGFzU29tZUZpeGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuc29tZShpdGVtID0+IGl0ZW0uZml4ZWQgPT09IHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKGhlaWdodCkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChoZWlnaHQpO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgPSB2YWx1ZSA/IHZhbHVlIC0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVWaXJ0dWFsID0gdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciA/IHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgLSB0aGlzLml0ZW1TaXplIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHZlcmlmeUNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKCkge1xuICAgIGlmICh0aGlzLmhlaWdodCAmJiB0aGlzLnZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkpIHtcbiAgICAgIHRoaXMuZm9vdGVySGVpZ2h0ID0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuXG4gICAgICB0aGlzLmNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKHRoaXMuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNJbmZpbml0ZVNjcm9sbCgpKSB7XG4gICAgICBsZXQgc2Nyb2xsSGVpZ2h0ID0gMDtcblxuICAgICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCkge1xuICAgICAgICBzY3JvbGxIZWlnaHQgPSB0aGlzLnRhYmxlVmlydHVhbFNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjcm9sbEhlaWdodCA9IHRoaXMudGFibGVTY3JvbGxhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBpZiAoc2Nyb2xsSGVpZ2h0ID49IHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VzQWZ0ZXJEZWxldGUobmV3SXRlbXNGaWx0ZXJlZDogQXJyYXk8YW55Pikge1xuICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgdGhpcy5zZXRTZWxlY3RlZExpc3QoKTtcbiAgICB0aGlzLm1vZGFsRGVsZXRlLmNsb3NlKCk7XG4gICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKHRoaXMubGl0ZXJhbHMuZGVsZXRlU3VjY2Vzc2Z1bCk7XG4gICAgdGhpcy5ldmVudERlbGV0ZS5lbWl0KG5ld0l0ZW1zRmlsdGVyZWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZVNpemVMb2FkaW5nKCkge1xuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdGhpcy50YWJsZVdyYXBwZXJFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQ7XG5cbiAgICBpZiAodGFibGVIZWlnaHQgPD0gMTUwKSB7XG4gICAgICB0aGlzLnNpemVMb2FkaW5nID0gJ3NtJztcbiAgICB9IGVsc2UgaWYgKHRhYmxlSGVpZ2h0ID4gMTUwICYmIHRhYmxlSGVpZ2h0IDwgMjYwKSB7XG4gICAgICB0aGlzLnNpemVMb2FkaW5nID0gJ21kJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaXplTG9hZGluZyA9ICdsZyc7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ2hhbmdlc0l0ZW1zKCkge1xuICAgIGNvbnN0IGNoYW5nZXNJdGVtcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5pdGVtcyk7XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmIHRoaXMuc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNJdGVtcyAmJiAhdGhpcy5oYXNDb2x1bW5zICYmIHRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZ2V0RGVmYXVsdENvbHVtbnModGhpcy5pdGVtc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdykge1xuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xpbmsnICYmIGNvbHVtbi50b29sdGlwICYmICF0aGlzLmNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBjb2x1bW4udG9vbHRpcCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGFiZWwnKSB7XG4gICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHRoaXMuZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pO1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gY29sdW1uTGFiZWw/LnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY291bnRFeHRyYUNvbHVtbnMoKTogbnVtYmVyIHtcbiAgICBsZXQgZXh0cmFDb2x1bW5zID0gMDtcblxuICAgIGlmICghdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgJiYgdGhpcy5oYXNJdGVtcykge1xuICAgICAgaWYgKFxuICAgICAgICAodGhpcy5oYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgdGhpcy5oYXNSb3dUZW1wbGF0ZSkgJiZcbiAgICAgICAgdGhpcy5oYXNNYWluQ29sdW1ucyAmJlxuICAgICAgICAhdGhpcy5oYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XG4gICAgICApIHtcbiAgICAgICAgZXh0cmFDb2x1bW5zKys7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJlxuICAgICAgICB0aGlzLmhhc01haW5Db2x1bW5zICYmXG4gICAgICAgICh0aGlzLmhhc1Zpc2libGVBY3Rpb25zIHx8IHRoaXMuaGlkZUNvbHVtbnNNYW5hZ2VyKVxuICAgICAgKSB7XG4gICAgICAgIGV4dHJhQ29sdW1ucysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBleHRyYUNvbHVtbnM7XG4gIH1cblxuICBwcml2YXRlIGRlYm91bmNlUmVzaXplKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRSZXNpemUpO1xuICAgIHRoaXMudGltZW91dFJlc2l6ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gc2hvdyB0aGUgdGFibGVcbiAgICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVJdGVtc0xvY2FsKG5ld0l0ZW1zOiBBcnJheTxhbnk+LCBuZXdJdGVtc0ZpbHRlcmVkOiBBcnJheTxhbnk+KSB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLml0ZW1zID0gbmV3SXRlbXNGaWx0ZXJlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgICAgbmV3SXRlbXNcbiAgICAgICAgLnNsaWNlKClcbiAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS4kc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbShpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICB0aGlzLm9uRmlsdGVyZWRJdGVtc0NoYW5nZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlSXRlbXNTZXJ2aWNlKG5ld0l0ZW1zRmlsdGVyZWQ6IEFycmF5PGFueT4pIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNlcnZpY2UuYWRkKFxuICAgICAgdGhpcy5kZWZhdWx0U2VydmljZS5kZWxldGVJdGVtKHRoaXMucGFyYW1EZWxldGVBcGksIHRoaXMuaXRlbXNTZWxlY3RlZFswXVt0aGlzLnBhcmFtRGVsZXRlQXBpXSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogdmFsdWUgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmhhc1NlcnZpY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zID0ge1xuICAgICAgICAgICAgICAuLi50aGlzLnBhcmFtc0ZpbHRlcixcbiAgICAgICAgICAgICAgcGFnZVNpemU6IG5ld0l0ZW1zRmlsdGVyZWQubGVuZ3RoICsgMSxcbiAgICAgICAgICAgICAgcGFnZTogMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblNlcnZpY2UuYWRkKFxuICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRTZXJ2aWNlLmdldEZpbHRlcmVkSXRlbXMoZmlsdGVyZWRQYXJhbXMpLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUYWJsZVJlc3BvbnNlUHJvcGVydGllcyhpdGVtcyk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLml0ZW1zID0gbmV3SXRlbXNGaWx0ZXJlZDtcbiAgICAgICAgICB0aGlzLmNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKHRoaXMubGl0ZXJhbHMuZGVsZXRlQXBpRXJyb3IpO1xuICAgICAgICAgIHRoaXMubW9kYWxEZWxldGUuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmV2ZW50RGVsZXRlLmVtaXQodGhpcy5pdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEN1c3RvbUljb24ocm93SWNvbnMsIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IGN1c3RvbUljb24gPSBjb2x1bW4uaWNvbnMuZmluZChpY29uID0+IHJvd0ljb25zID09PSBpY29uLnZhbHVlKTtcbiAgICByZXR1cm4gY3VzdG9tSWNvbiA/IFtjdXN0b21JY29uXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SGVpZ2h0VGFibGVGb290ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVGb290ZXJFbGVtZW50ID8gdGhpcy50YWJsZUZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNJbmZpbml0ZVNjcm9sbCgpOiBib29sZWFuIHtcbiAgICBsZXQgc2Nyb2xsSGVpZ2h0ID0gMDtcblxuICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy50YWJsZVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgIHNjcm9sbEhlaWdodCA9IHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIH1cbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLnRhYmxlU2Nyb2xsYWJsZSkge1xuICAgICAgc2Nyb2xsSGVpZ2h0ID0gdGhpcy50YWJsZVNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW5maW5pdGVTY3JvbGwgJiYgdGhpcy5oYXNJdGVtcyAmJiAhdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCAmJiB0aGlzLmhlaWdodCA+IDAgJiYgc2Nyb2xsSGVpZ2h0ID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGxldCBlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCkge1xuICAgICAgZWxlbWVudCA9IHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsPy5uYXRpdmVFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50ID0gdGhpcy50YWJsZVNjcm9sbGFibGUubmF0aXZlRWxlbWVudC5jbG9zZXN0KCcucG8tdGFibGUtY29udGFpbmVyLW92ZXJmbG93Jyk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnQkID0gdGhpcy5kZWZhdWx0U2VydmljZS5zY3JvbGxMaXN0ZW5lcihlbGVtZW50KTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQgPSB0aGlzLnNjcm9sbEV2ZW50JC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5zaG93TW9yZUluZmluaXRlU2Nyb2xsKGV2ZW50KSk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnM6IEFycmF5PHN0cmluZz4sIGN1c3RvbUljb25zOiBBcnJheTxhbnk+KSB7XG4gICAgY29uc3QgbWVyZ2VkSWNvbnMgPSBbXTtcblxuICAgIHJvd0ljb25zLmZvckVhY2goY29sdW1uVmFsdWUgPT4ge1xuICAgICAgY29uc3QgZm91bmRDdXN0b21JY29uID0gY3VzdG9tSWNvbnMuZmluZChcbiAgICAgICAgY3VzdG9tSWNvbiA9PiBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi5pY29uIHx8IGNvbHVtblZhbHVlID09PSBjdXN0b21JY29uLnZhbHVlXG4gICAgICApO1xuICAgICAgZm91bmRDdXN0b21JY29uID8gbWVyZ2VkSWNvbnMucHVzaChmb3VuZEN1c3RvbUljb24pIDogbWVyZ2VkSWNvbnMucHVzaChjb2x1bW5WYWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkSWNvbnM7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNsaWNrTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50KSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZU9wYWNpdHkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMudGFibGVPcGFjaXR5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLmZvb3RlckhlaWdodCAhPT0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVTZWxlY3QoY29tcGFyZSwgc2VsZWN0VmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIGNvbXBhcmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gPT09IGNvbXBhcmUpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoY29tcGFyZShpdGVtKSkge1xuICAgICAgICAgIGl0ZW0uJHNlbGVjdGVkID0gc2VsZWN0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnNcIj5cbiAgPGRpdlxuICAgICNjb2x1bW5CYXRjaEFjdGlvbnNcbiAgICAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiBpdGVtc1NlbGVjdGVkLmxlbmd0aCA+IDAgJiYgIWhpZGVCYXRjaEFjdGlvbnNcIlxuICAgIGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zXCJcbiAgPlxuICAgIDxkaXYgW25nUGx1cmFsXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoXCIgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2xhYmVsXCI+XG4gICAgICA8c3Ryb25nPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTBcIj57eyBsaXRlcmFscy5ub0l0ZW0gfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTFcIj57eyBsaXRlcmFscy5vbmVJdGVtIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIm90aGVyXCI+e3sgaXRlbXNTZWxlY3RlZC5sZW5ndGggfX0ge3sgbGl0ZXJhbHMubXVsdGlwbGVJdGVtcyB9fTwvbmctdGVtcGxhdGU+XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2J1dHRvbnNcIj5cbiAgICAgIDxwby1idXR0b25cbiAgICAgICAgcC1pY29uPVwiSUNPTl9ERUxFVEVcIlxuICAgICAgICBbcC1kYW5nZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoID4gMSAmJiBzZXJ2aWNlRGVsZXRlQXBpICE9PSB1bmRlZmluZWRcIlxuICAgICAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5kZWxldGVcIlxuICAgICAgICAocC1jbGljayk9XCJtb2RhbERlbGV0ZS5vcGVuKClcIlxuICAgICAgPjwvcG8tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICNjb2x1bW5NYW5hZ2VyICpuZ0lmPVwiaGFzVmFsaWRDb2x1bW5zICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnMtY29sdW1uLW1hbmFnZXJcIj5cbiAgICA8cG8tYnV0dG9uXG4gICAgICAjY29sdW1uTWFuYWdlclRhcmdldFxuICAgICAgcC1pY29uPVwiSUNPTl9TRVRUSU5HU1wiXG4gICAgICBwLWtpbmQ9XCJ0ZXJ0aWFyeVwiXG4gICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIFtwLWFyaWEtbGFiZWxdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgW3AtdG9vbHRpcF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAocC1jbGljayk9XCJvbk9wZW5Db2x1bW5NYW5hZ2VyKClcIlxuICAgID48L3BvLWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlVGFibGVTZWFyY2ggJiYgaGFzVmFsaWRDb2x1bW5zXCIgY2xhc3M9XCJwby10YWJsZS1zZWFyY2hcIj5cbiAgICA8cG8tc2VhcmNoXG4gICAgICBbcC1pdGVtc109XCJpdGVtc1wiXG4gICAgICBbcC1maWx0ZXIta2V5c109XCJmaWx0ZXJlZENvbHVtbnNcIlxuICAgICAgW3AtZmlsdGVyLXR5cGVdPVwiZmlsdGVyVHlwZVwiXG4gICAgICAocC1maWx0ZXJlZC1pdGVtcy1jaGFuZ2UpPVwib25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L3BvLXNlYXJjaD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxwby1jb250YWluZXIgKm5nSWY9XCJjb250YWluZXI7IGVsc2UgdGFibGVDb250YWluZXJUZW1wbGF0ZVwiIHAtbm8tcGFkZGluZz5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvcG8tY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlQ29udGFpbmVyVGVtcGxhdGU+XG4gIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWNvbnRhaW5lci1zdGlja3ldPVwibG9hZGluZ1wiPlxuICAgIDxwby1sb2FkaW5nLW92ZXJsYXkgKm5nSWY9XCJsb2FkaW5nXCIgW3AtdGV4dF09XCJsaXRlcmFscy5sb2FkaW5nRGF0YVwiIFtwLXNpemVdPVwic2l6ZUxvYWRpbmdcIj48L3BvLWxvYWRpbmctb3ZlcmxheT5cbiAgICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtbWFpbi1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI3RhYmxlV3JhcHBlclxuICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXdyYXBwZXJcIlxuICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWNvbHVtbnMtcGl4ZWxzXT1cImFsbENvbHVtbnNXaWR0aFBpeGVsc1wiXG4gICAgICAgIFtzdHlsZS5vcGFjaXR5XT1cInRhYmxlT3BhY2l0eVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWlnaHRcIiBjbGFzcz1cInBvLXRhYmxlLWNvbnRhaW5lclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0VGFibGVDb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2ICNwb1RhYmxlVGJvZHkgW2NsYXNzLnBvLXRhYmxlLWNvbnRhaW5lci1maXhlZC1pbm5lcl09XCJ2aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVWaXJ0dWFsU2Nyb2xsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF2aXJ0dWFsU2Nyb2xsXCIgY2xhc3M9XCJwby10YWJsZS1jb250YWluZXItb3ZlcmZsb3dcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoZWlnaHRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtZm9vdGVyXCIgKm5nSWY9XCJoYXNGb290ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc3VidGl0bGVDb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICA8cG8tdGFibGUtc3VidGl0bGUtZm9vdGVyIFtwLWxpdGVyYWxzXT1cImxpdGVyYWxzXCIgW3Atc3VidGl0bGVzXT1cImNvbHVtbi5zdWJ0aXRsZXNcIj4gPC9wby10YWJsZS1zdWJ0aXRsZS1mb290ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBTaG93IE1vcmUgQnV0dG9uIC0tPlxuPGRpdlxuICAqbmdJZj1cIiFpbmZpbml0ZVNjcm9sbFwiXG4gIGNsYXNzPVwicG8tcm93IHBvLXRhYmxlLWZvb3Rlci1zaG93LW1vcmVcIlxuICBbY2xhc3MucG8taW52aXNpYmxlXT1cInNob3dNb3JlLm9ic2VydmVycy5sZW5ndGggPT09IDAgJiYgIWhhc1NlcnZpY2VcIlxuICAjdGFibGVGb290ZXJcbj5cbiAgPHBvLWJ1dHRvblxuICAgIGNsYXNzPVwicG8tb2Zmc2V0LXhsLTQgcG8tb2Zmc2V0LWxnLTQgcG8tb2Zmc2V0LW1kLTMgcG8tbGctNCBwby1tZC02XCJcbiAgICBbcC1kaXNhYmxlZF09XCJzaG93TW9yZURpc2FibGVkXCJcbiAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5sb2FkTW9yZURhdGFcIlxuICAgIFtwLWxvYWRpbmddPVwibG9hZGluZ1Nob3dNb3JlXCJcbiAgICAocC1jbGljayk9XCJvblNob3dNb3JlKClcIlxuICA+XG4gIDwvcG8tYnV0dG9uPlxuPC9kaXY+XG5cbjwhLS0gVGFibGUgZGVmYXVsdC0tPlxuPG5nLXRlbXBsYXRlICN0YWJsZVRlbXBsYXRlPlxuICA8dGFibGVcbiAgICAjdGFibGVTY3JvbGxhYmxlXG4gICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BvLXRhYmxlLWludGVyYWN0aXZlJzogc2VsZWN0YWJsZSB8fCBzb3J0LFxuICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgJ3BvLXRhYmxlLXN0cmlwZWQnOiBzdHJpcGVkLFxuICAgICAgJ3BvLXRhYmxlLWRhdGEtZml4ZWQtY29sdW1ucyc6IGFwcGx5Rml4ZWRDb2x1bW5zKCksXG4gICAgICAncG8tdGFibGUtdGV4dC13cmFwLWVuYWJsZWQnOiB0ZXh0V3JhcFxuICAgIH1cIlxuICAgIFthdHRyLnAtc3BhY2luZ109XCJzcGFjaW5nXCJcbiAgPlxuICAgIDx0aGVhZCBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN0aWNreV09XCJoZWlnaHQgPiAwICYmICF2aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICA8dHJcbiAgICAgICAgW25nQ2xhc3NdPVwiIWhlaWdodCA/IHsgJ25vLWhvdmVyJzogaGlkZVNlbGVjdEFsbCwgJ3BvLXRhYmxlLWNvbHVtbi1kcmFnJzogdGhpcy5pc0RyYWdnYWJsZSB9IDogJydcIlxuICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyXT1cIiFoZWlnaHRcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCJcbiAgICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaGlkZVNlbGVjdEFsbCA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCI+XG4gICAgICAgICAgICA8cG8tY2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAocC1jaGFuZ2UpPVwic2VsZWN0QWxsUm93cygpXCJcbiAgICAgICAgICAgICAgW3AtY2hlY2tib3hWYWx1ZV09XCJzZWxlY3RBbGwgPT09IG51bGwgPyAnbWl4ZWQnIDogc2VsZWN0QWxsXCJcbiAgICAgICAgICAgID48L3BvLWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiKGhhc01hc3RlckRldGFpbENvbHVtbiB8fCBoYXNSb3dUZW1wbGF0ZSkgJiYgaGFzTWFpbkNvbHVtbnMgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDwhLS0gQ29sdW5hIGNyaWFkYSBwYXJhIGNhc28gYXMgYcOnw7VlcyBmaXF1ZW0gbm8gbGFkbyBlc3F1ZXJkbyAtLT5cbiAgICAgICAgPHRoXG4gICAgICAgICAgI2NvbHVtbkFjdGlvbkxlZnRcbiAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXIgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwidGhpcy5pc0RyYWdnYWJsZSB8fCBoYXNTb21lRml4ZWQoKTsgdGhlbiB0YWJsZURlZmF1bHRUaERyYWdEcm9wOyBlbHNlIHRhYmxlRGVmYXVsdFRoRGVmYXVsdFwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEZWZhdWx0VGhEcmFnRHJvcD5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgJ3dpZHRoJzpcbiAgICAgICAgICAgICAgICBoZWlnaHQgPiAwICYmICF2aXJ0dWFsU2Nyb2xsID8gKCFoYXNJdGVtcyA/ICcxMDAlJyA6IGFwcGx5Rml4ZWRDb2x1bW5zKCkgPyBjb2x1bW4ud2lkdGggOiAnYXV0bycpIDogJydcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWRyYWctYm94XT1cInRoaXMuaXNEcmFnZ2FibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uKVwiXG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiY29sdW1uLmZpeGVkID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5pc0RyYWdnYWJsZSAmJiAhY29sdW1uLmZpeGVkXCI+XG4gICAgICAgICAgICAgICAgPHBvLWljb24gY2RrRHJhZ0hhbmRsZSAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fRFJBR1wiPjwvcG8taWNvbj5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImljb25OYW1lTGliID09PSAnUG9JY29uJ1wiXG4gICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjE4XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEZWZhdWx0VGhEZWZhdWx0PlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpcyBwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICBzb3J0ICYmXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiZcbiAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAnd2lkdGgnOlxuICAgICAgICAgICAgICAgIGhlaWdodCA+IDAgJiYgIXZpcnR1YWxTY3JvbGwgPyAoIWhhc0l0ZW1zID8gJzEwMCUnIDogYXBwbHlGaXhlZENvbHVtbnMoKSA/IGNvbHVtbi53aWR0aCA6ICdhdXRvJykgOiAnJ1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN1YnRpdGxlXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHQgJiYgKGhhc1Zpc2libGVBY3Rpb25zIHx8IGhpZGVDb2x1bW5zTWFuYWdlcikgJiYgaGFzTWFpbkNvbHVtbnNcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzVmlzaWJsZUFjdGlvbnMgJiYgYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItYWN0aW9uc109XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cblxuICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0lmPVwiIWhhc0l0ZW1zIHx8ICFoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5Db3VudFwiIGNsYXNzPVwicG8tdGFibGUtbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX0gPC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGZpbHRlcmVkSXRlbXM7IGxldCByb3dJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICAgIDx0ciBjbGFzcz1cInBvLXRhYmxlLXJvd1wiIFtjbGFzcy5wby10YWJsZS1yb3ctYWN0aXZlXT1cInJvdy4kc2VsZWN0ZWQgfHwgKHJvdy4kc2VsZWN0ZWQgPT09IG51bGwgJiYgc2VsZWN0YWJsZSlcIj5cbiAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbmdsZVNlbGVjdCA/IGlucHV0UmFkaW8gOiBpbnB1dENoZWNrYm94OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIFZhbGlkYSBzZSBhIG9yaWdlbSBkbyBkZXRhaWwgw6kgcGVsbyBpbnB1dCBkbyBwby10YWJsZSBvdSBwZWxhIGRpcmV0aXZhIC0tPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKGNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGUpIHx8XG4gICAgICAgICAgICAgIChoYXNSb3dUZW1wbGF0ZSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgY29tIGFzIGHDp8O1ZXMgbmEgZXNxdWVyZGEgKHBhZHLDo28pLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQgOiAnc3ltYm9sJyA6ICcxLjItMicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IHBvX3RpbWU6IGNvbHVtbi5mb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdE51bWJlcihnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbi5mb3JtYXQpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxpbmtcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwiY29sdW1uLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLWxpbmtdPVwicm93W2NvbHVtbi5saW5rXVwiXG4gICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgW3AtdmFsdWVdPVwiZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0xpbmsoJGV2ZW50LCByb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWxpbms+XG5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1pY29uXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgW3AtY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgW3AtaWNvbnNdPVwiZ2V0Q29sdW1uSWNvbnMocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1pY29uPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3VidGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZSBbcC1zdWJ0aXRsZV09XCJnZXRTdWJ0aXRsZUNvbHVtbihyb3csIGNvbHVtbilcIj48L3BvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGFiZWwgW3AtdmFsdWVdPVwiZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pXCI+IDwvcG8tdGFibGUtY29sdW1uLWxhYmVsPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBkZSBhw6dvZXMgbmEgZGlyZWl0YSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaGFzUm93VGVtcGxhdGUgJiYgcm93LiRzaG93RGV0YWlsICYmIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVSb3dUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG5cbiAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaXNTaG93TWFzdGVyRGV0YWlsKHJvdylcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxwby10YWJsZS1kZXRhaWxcbiAgICAgICAgICAgICAgW3Atc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlICYmICFkZXRhaWxIaWRlU2VsZWN0XCJcbiAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICBbcC1pdGVtc109XCJyb3dbbmFtZUNvbHVtbkRldGFpbF1cIlxuICAgICAgICAgICAgICBbcC1wYXJlbnQtcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRhYmxlIHdpdGggdmlydHVhbCBzY3JvbGwgLS0+XG48bmctdGVtcGxhdGUgI3RhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlPlxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3RhYmxlVmlydHVhbFNjcm9sbFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiXG4gICAgW21pbkJ1ZmZlclB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyIDwgMTAwID8gMTAwIDogaGVpZ2h0VGFibGVDb250YWluZXJcIlxuICAgIFttYXhCdWZmZXJQeF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lciA8IDIwMCA/IDIwMCA6IGhlaWdodFRhYmxlQ29udGFpbmVyXCJcbiAgPlxuICAgIDx0YWJsZVxuICAgICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgICAncG8tdGFibGUtc3RyaXBlZCc6IHN0cmlwZWQsXG4gICAgICAgICdwby10YWJsZS1kYXRhLWZpeGVkLWNvbHVtbnMnOiBhcHBseUZpeGVkQ29sdW1ucygpLFxuICAgICAgICAncG8tdGFibGUtdGV4dC13cmFwLWVuYWJsZWQnOiB0ZXh0V3JhcFxuICAgICAgfVwiXG4gICAgICBbYXR0ci5wLXNwYWNpbmddPVwic3BhY2luZ1wiXG4gICAgPlxuICAgICAgPHRoZWFkIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLXN0aWNreVwiIFtzdHlsZS50b3BdPVwiaW52ZXJzZU9mVHJhbnNsYXRpb25cIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaGlkZVNlbGVjdEFsbCA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCI+XG4gICAgICAgICAgICAgIDxwby1jaGVja2JveFxuICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgID48L3BvLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgKGhhc01hc3RlckRldGFpbENvbHVtbiB8fCBoYXNSb3dUZW1wbGF0ZSkgJiYgaGFzTWFpbkNvbHVtbnMgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgI2NvbHVtbkFjdGlvbkxlZnRcbiAgICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7XG4gICAgICAgICAgICAgIHRoZW4gdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcDtcbiAgICAgICAgICAgICAgZWxzZSB0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcD5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogIWhhc0l0ZW1zID8gJzEwMCUnIDogYXBwbHlGaXhlZENvbHVtbnMoKSA/IGNvbHVtbi53aWR0aCA6ICdhdXRvJyB9XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tZHJhZy1ib3hdPVwidGhpcy5pc0RyYWdnYWJsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImNvbHVtbi5maXhlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgJiYgIWNvbHVtbi5maXhlZFwiPlxuICAgICAgICAgICAgICAgICAgPHBvLWljb24gY2RrRHJhZ0hhbmRsZSAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fRFJBR1wiPjwvcG8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiNlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHQ+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uIGV4YW1wbGUtYm94XCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgICBzb3J0ICYmXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCc6ICFoYXNJdGVtcyA/ICcxMDAlJyA6IGFwcGx5Rml4ZWRDb2x1bW5zKCkgPyBjb2x1bW4ud2lkdGggOiAnYXV0bycgfVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiBoYXNNYWluQ29sdW1ucyAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuXG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICAgIDx0Ym9keVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZmlsdGVyZWRJdGVtczsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXJvd1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2luZ2xlU2VsZWN0ID8gaW5wdXRSYWRpbyA6IGlucHV0Q2hlY2tib3g7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxvIGlucHV0IGRvIHBvLXRhYmxlIG91IHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAoY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAoaGFzUm93VGVtcGxhdGUgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHQpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBjb20gYXMgYcOnw7VlcyBuYSBlc3F1ZXJkYSAocGFkcsOjbyktLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uXT1cImNvbHVtbi50eXBlICE9PSAnaWNvbidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1pY29uc109XCJjb2x1bW4udHlwZSA9PT0gJ2ljb24nXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2xhc3NDb2xvcihyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhc1NlbGVjdGFibGVSb3coKSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tY2VsbCBwby10YWJsZS1ib2R5LWVsbGlwc2lzIG5vdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgICAgICAgICAgICAgIFtwLWFwcGVuZC1pbi1ib2R5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0VGVtcGxhdGUoY29sdW1uKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRCb29sZWFuTGFiZWwoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4pIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGN1cnJlbmN5OiBjb2x1bW4uZm9ybWF0IDogJ3N5bWJvbCcgOiAnMS4yLTInIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBwb190aW1lOiBjb2x1bW4uZm9ybWF0IHx8ICdISDptbTpzcy5mZmZmZmYnIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXkgSEg6bW06c3MnIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtYXROdW1iZXIoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4uZm9ybWF0KSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGlua1xuICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaW5rJ1wiXG4gICAgICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwiY29sdW1uLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICBbcC1saW5rXT1cInJvd1tjb2x1bW4ubGlua11cIlxuICAgICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICBbcC12YWx1ZV09XCJnZXRDZWxsRGF0YShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tMaW5rKCRldmVudCwgcm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4tbGluaz5cblxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4taWNvblxuICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgICBbcC1jb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgIFtwLWljb25zXT1cImdldENvbHVtbkljb25zKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4taWNvbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3VidGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgICA8cG8tdGFibGUtc3VidGl0bGUtY2lyY2xlIFtwLXN1YnRpdGxlXT1cImdldFN1YnRpdGxlQ29sdW1uKHJvdywgY29sdW1uKVwiPjwvcG8tdGFibGUtc3VidGl0bGUtY2lyY2xlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1sYWJlbCBbcC12YWx1ZV09XCJnZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbilcIj4gPC9wby10YWJsZS1jb2x1bW4tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bmEgZGUgYcOnb2VzIG5hIGRpcmVpdGEgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBoYXNSb3dUZW1wbGF0ZSAmJiByb3cuJHNob3dEZXRhaWwgJiYgaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleClcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLXJvdy10ZW1wbGF0ZS1jb250YWluZXJcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZVJvd1RlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KVwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbFwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICAgIDxwby10YWJsZS1kZXRhaWxcbiAgICAgICAgICAgICAgICBbcC1zZWxlY3RhYmxlXT1cInNlbGVjdGFibGUgJiYgIWRldGFpbEhpZGVTZWxlY3RcIlxuICAgICAgICAgICAgICAgIFtwLWRldGFpbF09XCJjb2x1bW5NYXN0ZXJEZXRhaWwuZGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbcC1pdGVtc109XCJyb3dbbmFtZUNvbHVtbkRldGFpbF1cIlxuICAgICAgICAgICAgICAgIFtwLXBhcmVudC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAocC1zZWxlY3Qtcm93KT1cInNlbGVjdERldGFpbFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWRldGFpbD5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPHBvLXBvcHVwICNwb3B1cCBbcC1hY3Rpb25zXT1cImFjdGlvbnNcIiBbcC10YXJnZXRdPVwicG9wdXBUYXJnZXRcIj4gPC9wby1wb3B1cD5cblxuPG5nLXRlbXBsYXRlICNwb1RhYmxlQ29sdW1uRGV0YWlsIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8cG8taWNvblxuICAgICpuZ0lmPVwiKGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiYgIWhhc1Jvd1RlbXBsYXRlKSB8fCAoaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleCkgJiYgaGFzUm93VGVtcGxhdGUpXCJcbiAgICBbcC1pY29uXT1cInJvdy4kc2hvd0RldGFpbCA/ICdJQ09OX0FSUk9XX1VQJyA6ICdJQ09OX0FSUk9XX0RPV04nXCJcbiAgICBjbGFzcz1cInBvLWNsaWNrYWJsZVwiXG4gID5cbiAgPC9wby1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFJhZGlvIGxldC1yb3c+XG4gIDxwby1yYWRpbyBbbmFtZV09XCJpZFJhZGlvXCIgW3AtY2hlY2tlZF09XCJyb3cuJHNlbGVjdGVkXCIgKHAtY2hhbmdlLXNlbGVjdGVkKT1cInNlbGVjdFJvdyhyb3cpXCI+PC9wby1yYWRpbz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRDaGVja2JveCBsZXQtcm93PlxuICA8cG8tY2hlY2tib3hcbiAgICBuYW1lPVwiY2hlY2tib3hcIlxuICAgIChwLWNoYW5nZSk9XCJzZWxlY3RhYmxlID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgW3AtY2hlY2tib3hWYWx1ZV09XCJyb3cuJHNlbGVjdGVkID09PSBudWxsID8gJ21peGVkJyA6IHJvdy4kc2VsZWN0ZWRcIlxuICA+PC9wby1jaGVja2JveD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEhlYWRlclRlbXBsYXRlIGxldC1jb2x1bW4+XG4gIDxzcGFuXG4gICAgI2NvbHVtbkhlYWRlclxuICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzXCJcbiAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICBbcC1hcHBlbmQtaW4tYm9keV09XCJ0cnVlXCJcbiAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwTW91c2VFbnRlcigkZXZlbnQpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgPlxuICAgIHt7IGNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB9fVxuICA8L3NwYW4+XG5cbiAgPHNwYW5cbiAgICAqbmdJZj1cInNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZVwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLXVuc2VsZWN0ZWRdPVwiSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgIT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbilcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi1kZXNjZW5kaW5nXT1cIlxuICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiYgc29ydGVkQ29sdW1uLmFzY2VuZGluZ1xuICAgIFwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLWFzY2VuZGluZ109XCJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXG4gICAgXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSAhPT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKVwiPlxuICAgICAgPHBvLWljb24gKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1Bob3NwaG9ySWNvbidcIiBwLWljb249XCJJQ09OX1NPUlRcIj48L3BvLWljb24+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQb0ljb24nXCJcbiAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xOC4yOTI5IDE1LjI5MjlMMTcgMTYuNTg1OEwxNyAxMEMxNyA5LjQ0NzcyIDE2LjU1MjMgOSAxNiA5QzE1LjQ0NzcgOSAxNSA5LjQ0NzcyIDE1IDEwTDE1IDE2LjU4NThMMTMuNzA3MSAxNS4yOTI5QzEzLjMxNjYgMTQuOTAyNCAxMi42ODM0IDE0LjkwMjQgMTIuMjkyOSAxNS4yOTI5QzExLjkwMjQgMTUuNjgzNCAxMS45MDI0IDE2LjMxNjYgMTIuMjkyOSAxNi43MDcxTDE1LjI5MjkgMTkuNzA3MUMxNS42ODM0IDIwLjA5NzYgMTYuMzE2NiAyMC4wOTc2IDE2LjcwNzEgMTkuNzA3MUwxOS43MDcxIDE2LjcwNzFDMjAuMDk3NiAxNi4zMTY2IDIwLjA5NzYgMTUuNjgzNCAxOS43MDcxIDE1LjI5MjlDMTkuMzE2NiAxNC45MDI0IDE4LjY4MzQgMTQuOTAyNCAxOC4yOTI5IDE1LjI5MjlaTTUuNzA3MTYgOC43MDcxTDcuMDAwMDYgNy40MTQyTDcuMDAwMDMgMTRDNy4wMDAwMiAxNC41NTIzIDcuNDQ3NzQgMTUgOC4wMDAwMiAxNUM4LjU1MjMxIDE1IDkuMDAwMDIgMTQuNTUyMyA5LjAwMDAzIDE0TDkuMDAwMDYgNy40MTQxOEwxMC4yOTI5IDguNzA3MDdDMTAuNjgzNSA5LjA5NzU5IDExLjMxNjYgOS4wOTc1OCAxMS43MDcyIDguNzA3MDZDMTIuMDk3NyA4LjMxNjUzIDEyLjA5NzcgNy42ODMzNiAxMS43MDcyIDcuMjkyODRMOC43MDcxOCA0LjI5Mjg2QzguMzE2NjUgMy45MDIzNCA3LjY4MzQ5IDMuOTAyMzUgNy4yOTI5NiA0LjI5Mjg3TDQuMjkyOTUgNy4yOTI4OUMzLjkwMjQyIDcuNjgzNDIgMy45MDI0MiA4LjMxNjU4IDQuMjkyOTQgOC43MDcxMUM0LjY4MzQ3IDkuMDk3NjMgNS4zMTY2MyA5LjA5NzYyIDUuNzA3MTYgOC43MDcxWlwiXG4gICAgICAgICAgZmlsbD1cIiMxRDFEMzBcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiYgc29ydGVkQ29sdW1uLmFzY2VuZGluZ1wiPlxuICAgICAgPHBvLWljb24gKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1Bob3NwaG9ySWNvbidcIiBwLWljb249XCJJQ09OX1NPUlRfQVNDXCI+PC9wby1pY29uPlxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cImljb25OYW1lTGliID09PSAnUG9JY29uJ1wiXG4gICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTEgOS40MTQyMUw5LjcwNzExIDEwLjcwNzFDOS4zMTY1OCAxMS4wOTc2IDguNjgzNDIgMTEuMDk3NiA4LjI5Mjg5IDEwLjcwNzFDNy45MDIzNyAxMC4zMTY2IDcuOTAyMzcgOS42ODM0MiA4LjI5Mjg5IDkuMjkyODlMMTEuMjkyOSA2LjI5Mjg5QzExLjY4MzQgNS45MDIzNyAxMi4zMTY2IDUuOTAyMzcgMTIuNzA3MSA2LjI5Mjg5TDE1LjcwNzEgOS4yOTI4OUMxNi4wOTc2IDkuNjgzNDIgMTYuMDk3NiAxMC4zMTY2IDE1LjcwNzEgMTAuNzA3MUMxNS4zMTY2IDExLjA5NzYgMTQuNjgzNCAxMS4wOTc2IDE0LjI5MjkgMTAuNzA3MUwxMyA5LjQxNDIxVjE2QzEzIDE2LjU1MjMgMTIuNTUyMyAxNyAxMiAxN0MxMS40NDc3IDE3IDExIDE2LjU1MjMgMTEgMTZWOS40MTQyMVpcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiAhc29ydGVkQ29sdW1uLmFzY2VuZGluZ1wiPlxuICAgICAgPHBvLWljb24gY2RrRHJhZ0hhbmRsZSAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fU09SVF9ERVNDXCI+PC9wby1pY29uPlxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cImljb25OYW1lTGliID09PSAnUG9JY29uJ1wiXG4gICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNOS43MDcxMSAxMy4yOTI5TDExIDE0LjU4NThWN0MxMSA2LjQ0NzcyIDExLjQ0NzcgNiAxMiA2QzEyLjU1MjMgNiAxMyA2LjQ0NzcyIDEzIDdWMTQuNTg1OEwxNC4yOTI5IDEzLjI5MjlDMTQuNjgzNCAxMi45MDI0IDE1LjMxNjYgMTIuOTAyNCAxNS43MDcxIDEzLjI5MjlDMTYuMDk3NiAxMy42ODM0IDE2LjA5NzYgMTQuMzE2NiAxNS43MDcxIDE0LjcwNzFMMTIuNzA3MSAxNy43MDcxQzEyLjMxNjYgMTguMDk3NiAxMS42ODM0IDE4LjA5NzYgMTEuMjkyOSAxNy43MDcxTDguMjkyODkgMTQuNzA3MUM3LjkwMjM3IDE0LjMxNjYgNy45MDIzNyAxMy42ODM0IDguMjkyODkgMTMuMjkyOUM4LjY4MzQyIDEyLjkwMjQgOS4zMTY1OCAxMi45MDI0IDkuNzA3MTEgMTMuMjkyOVpcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbHVtbnNXaXRoSGVpZ2h0PlxuICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXCIgW3N0eWxlLndpZHRoLnB4XT1cImhlYWRlcldpZHRoXCI+XG4gICAge3sgaGFzVmFsaWRDb2x1bW5zID8gbGl0ZXJhbHMubm9WaXNpYmxlQ29sdW1uIDogbGl0ZXJhbHMubm9Db2x1bW5zIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbHVtbnNXaXRob3V0SGVpZ2h0PlxuICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGVtcGxhdGUgZGUgYcOnw7VlcyAtLT5cbjxuZy10ZW1wbGF0ZSAjQWN0aW9uc0NvbHVtblRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8dGRcbiAgICAqbmdJZj1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbiBwby10YWJsZS1jb2x1bW4tc2luZ2xlLWFjdGlvblwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiBhY3Rpb25SaWdodCA/IGdldFdpZHRoQ29sdW1uTWFuYWdlcigpIDogJydcIlxuICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiaGVpZ2h0ICYmICFhY3Rpb25SaWdodCA/IGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSA6ICcnXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmICFhY3Rpb25SaWdodCA/IGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSA6ICcnXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiZmlyc3RBY3Rpb24udmlzaWJsZSAhPT0gZmFsc2VcIlxuICAgICAgY2xhc3M9XCJwby10YWJsZS1zaW5nbGUtYWN0aW9uIHBvLWNsaWNrYWJsZVwiXG4gICAgICBbY2xhc3MucG8tdGFibGUtYWN0aW9uLWRpc2FibGVkXT1cImZpcnN0QWN0aW9uLmRpc2FibGVkID8gdmFsaWRhdGVUYWJsZUFjdGlvbihyb3csIGZpcnN0QWN0aW9uKSA6IGZhbHNlXCJcbiAgICAgIChjbGljayk9XCJleGVjdXRlVGFibGVBY3Rpb24ocm93LCBmaXJzdEFjdGlvbilcIlxuICAgID5cbiAgICAgIDxwby1pY29uICpuZ0lmPVwiZmlyc3RBY3Rpb24uaWNvblwiIGNsYXNzPVwicG8tdGFibGUtc2luZ2xlLWFjdGlvbi1jb250ZW50XCIgW3AtaWNvbl09XCJmaXJzdEFjdGlvbi5pY29uXCI+PC9wby1pY29uPlxuICAgICAge3sgZmlyc3RBY3Rpb24ubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC90ZD5cblxuICA8dGQgKm5nSWY9XCJ2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tYWN0aW9uc1wiPlxuICAgIDxkaXYgI3BvcHVwVGFyZ2V0IGNsYXNzPVwicG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKHJvdywgcG9wdXBUYXJnZXQpXCI+XG4gICAgICA8cG8taWNvbiBwLWljb249XCJJQ09OX01PUkVcIj48L3BvLWljb24+XG4gICAgPC9kaXY+XG4gIDwvdGQ+XG48L25nLXRlbXBsYXRlPlxuXG48cG8tdGFibGUtY29sdW1uLW1hbmFnZXJcbiAgKm5nSWY9XCIhaGlkZUNvbHVtbnNNYW5hZ2VyXCJcbiAgW3AtY29sdW1uc109XCJjb2x1bW5zXCJcbiAgW3AtbWF4LWNvbHVtbnNdPVwibWF4Q29sdW1uc1wiXG4gIFtwLXRhcmdldF09XCJjb2x1bW5NYW5hZ2VyVGFyZ2V0XCJcbiAgW3AtbGFzdC12aXNpYmxlLWNvbHVtbnMtc2VsZWN0ZWRdPVwibGFzdFZpc2libGVDb2x1bW5zU2VsZWN0ZWRcIlxuICBbcC1oaWRlLWFjdGlvbi1maXhlZC1jb2x1bW5zXT1cImhpZGVBY3Rpb25GaXhlZENvbHVtbnNcIlxuICAocC12aXNpYmxlLWNvbHVtbnMtY2hhbmdlKT1cIm9uVmlzaWJsZUNvbHVtbnNDaGFuZ2UoJGV2ZW50KVwiXG4gIChwLWNoYW5nZS12aXNpYmxlLWNvbHVtbnMpPVwib25DaGFuZ2VWaXNpYmxlQ29sdW1ucygkZXZlbnQpXCJcbiAgW3AtY29sdW1ucy1kZWZhdWx0XT1cImluaXRpYWxDb2x1bW5zXCJcbiAgKHAtaW5pdGlhbC1jb2x1bW5zKT1cIm9uQ29sdW1uUmVzdG9yZU1hbmFnZXIoJGV2ZW50KVwiXG4+XG48L3BvLXRhYmxlLWNvbHVtbi1tYW5hZ2VyPlxuXG48cG8tbW9kYWxcbiAgI21vZGFsRGVsZXRlXG4gIFtwLXRpdGxlXT1cImxpdGVyYWxzLmRlbGV0ZVwiXG4gIFtwLXByaW1hcnktYWN0aW9uXT1cImNvbmZpcm1cIlxuICBbcC1zZWNvbmRhcnktYWN0aW9uXT1cImNsb3NlXCJcbiAgW3AtY2xpY2stb3V0XT1cInRydWVcIlxuPlxuICA8cCBjbGFzcz1cInBvLWZvbnQtdGV4dC1sYXJnZVwiPnt7IGxpdGVyYWxzLmJvZHlEZWxldGUgfX08L3A+XG48L3BvLW1vZGFsPlxuIl19