@ionic/angular 8.8.9-dev.11780086312.13aac420 → 8.8.9-dev.11780414486.1df2bd72

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 (194) hide show
  1. package/fesm2022/ionic-angular-common.mjs +67 -79
  2. package/fesm2022/ionic-angular-common.mjs.map +1 -1
  3. package/fesm2022/ionic-angular-standalone.mjs +640 -506
  4. package/fesm2022/ionic-angular-standalone.mjs.map +1 -1
  5. package/fesm2022/ionic-angular.mjs +916 -484
  6. package/fesm2022/ionic-angular.mjs.map +1 -1
  7. package/package.json +11 -16
  8. package/schematics/add/index.js +27 -1
  9. package/schematics/utils/ast.js +1 -2
  10. package/schematics/utils/config.js +10 -11
  11. package/schematics/utils/package.js +1 -2
  12. package/types/ionic-angular-common.d.ts +1014 -0
  13. package/types/ionic-angular-standalone.d.ts +1560 -0
  14. package/{directives/proxies.d.ts → types/ionic-angular.d.ts} +590 -291
  15. package/app-initialize.d.ts +0 -3
  16. package/common/directives/control-value-accessors/index.d.ts +0 -1
  17. package/common/directives/control-value-accessors/value-accessor.d.ts +0 -36
  18. package/common/directives/navigation/back-button.d.ts +0 -23
  19. package/common/directives/navigation/nav-params.d.ts +0 -45
  20. package/common/directives/navigation/nav.d.ts +0 -21
  21. package/common/directives/navigation/router-link-delegate.d.ts +0 -60
  22. package/common/directives/navigation/router-outlet.d.ts +0 -104
  23. package/common/directives/navigation/stack-controller.d.ts +0 -42
  24. package/common/directives/navigation/stack-utils.d.ts +0 -38
  25. package/common/directives/navigation/tabs.d.ts +0 -83
  26. package/common/index.d.ts +0 -22
  27. package/common/overlays/modal.d.ts +0 -62
  28. package/common/overlays/popover.d.ts +0 -46
  29. package/common/providers/angular-delegate.d.ts +0 -28
  30. package/common/providers/config.d.ts +0 -11
  31. package/common/providers/dom-controller.d.ts +0 -16
  32. package/common/providers/menu-controller.d.ts +0 -78
  33. package/common/providers/nav-controller.d.ts +0 -116
  34. package/common/providers/platform.d.ts +0 -174
  35. package/common/types/interfaces.d.ts +0 -8
  36. package/common/types/ionic-lifecycle-hooks.d.ts +0 -27
  37. package/common/types/overlay-options.d.ts +0 -16
  38. package/common/utils/overlay.d.ts +0 -21
  39. package/common/utils/proxy.d.ts +0 -8
  40. package/common/utils/routing.d.ts +0 -28
  41. package/common/utils/util.d.ts +0 -1
  42. package/directives/angular-component-lib/utils.d.ts +0 -9
  43. package/directives/control-value-accessors/boolean-value-accessor.d.ts +0 -10
  44. package/directives/control-value-accessors/index.d.ts +0 -4
  45. package/directives/control-value-accessors/numeric-value-accessor.d.ts +0 -11
  46. package/directives/control-value-accessors/select-value-accessor.d.ts +0 -9
  47. package/directives/control-value-accessors/text-value-accessor.d.ts +0 -9
  48. package/directives/navigation/ion-back-button.d.ts +0 -9
  49. package/directives/navigation/ion-nav.d.ts +0 -8
  50. package/directives/navigation/ion-router-outlet.d.ts +0 -25
  51. package/directives/navigation/ion-tabs.d.ts +0 -13
  52. package/directives/navigation/router-link-delegate.d.ts +0 -16
  53. package/directives/overlays/modal.d.ts +0 -6
  54. package/directives/overlays/popover.d.ts +0 -6
  55. package/directives/proxies-list.d.ts +0 -2
  56. package/directives/validators/index.d.ts +0 -2
  57. package/directives/validators/max-validator.d.ts +0 -12
  58. package/directives/validators/min-validator.d.ts +0 -12
  59. package/esm2022/app-initialize.mjs +0 -29
  60. package/esm2022/common/directives/control-value-accessors/index.mjs +0 -2
  61. package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +0 -153
  62. package/esm2022/common/directives/navigation/back-button.mjs +0 -61
  63. package/esm2022/common/directives/navigation/nav-params.mjs +0 -47
  64. package/esm2022/common/directives/navigation/nav.mjs +0 -49
  65. package/esm2022/common/directives/navigation/router-link-delegate.mjs +0 -156
  66. package/esm2022/common/directives/navigation/router-outlet.mjs +0 -481
  67. package/esm2022/common/directives/navigation/stack-controller.mjs +0 -280
  68. package/esm2022/common/directives/navigation/stack-utils.mjs +0 -73
  69. package/esm2022/common/directives/navigation/tabs.mjs +0 -279
  70. package/esm2022/common/index.mjs +0 -20
  71. package/esm2022/common/ionic-angular-common.mjs +0 -5
  72. package/esm2022/common/overlays/modal.mjs +0 -103
  73. package/esm2022/common/overlays/popover.mjs +0 -91
  74. package/esm2022/common/providers/angular-delegate.mjs +0 -203
  75. package/esm2022/common/providers/config.mjs +0 -45
  76. package/esm2022/common/providers/dom-controller.mjs +0 -45
  77. package/esm2022/common/providers/menu-controller.mjs +0 -114
  78. package/esm2022/common/providers/nav-controller.mjs +0 -235
  79. package/esm2022/common/providers/platform.mjs +0 -258
  80. package/esm2022/common/types/interfaces.mjs +0 -2
  81. package/esm2022/common/types/ionic-lifecycle-hooks.mjs +0 -5
  82. package/esm2022/common/types/overlay-options.mjs +0 -2
  83. package/esm2022/common/utils/overlay.mjs +0 -26
  84. package/esm2022/common/utils/proxy.mjs +0 -47
  85. package/esm2022/common/utils/routing.mjs +0 -55
  86. package/esm2022/common/utils/util.mjs +0 -10
  87. package/esm2022/directives/angular-component-lib/utils.mjs +0 -59
  88. package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +0 -42
  89. package/esm2022/directives/control-value-accessors/index.mjs +0 -5
  90. package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +0 -50
  91. package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +0 -39
  92. package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +0 -38
  93. package/esm2022/directives/navigation/ion-back-button.mjs +0 -24
  94. package/esm2022/directives/navigation/ion-nav.mjs +0 -21
  95. package/esm2022/directives/navigation/ion-router-outlet.mjs +0 -52
  96. package/esm2022/directives/navigation/ion-tabs.mjs +0 -59
  97. package/esm2022/directives/navigation/router-link-delegate.mjs +0 -32
  98. package/esm2022/directives/overlays/modal.mjs +0 -22
  99. package/esm2022/directives/overlays/popover.mjs +0 -18
  100. package/esm2022/directives/proxies-list.mjs +0 -89
  101. package/esm2022/directives/proxies.mjs +0 -2344
  102. package/esm2022/directives/validators/index.mjs +0 -3
  103. package/esm2022/directives/validators/max-validator.mjs +0 -27
  104. package/esm2022/directives/validators/min-validator.mjs +0 -27
  105. package/esm2022/index.mjs +0 -31
  106. package/esm2022/ionic-angular.mjs +0 -5
  107. package/esm2022/ionic-module.mjs +0 -111
  108. package/esm2022/providers/action-sheet-controller.mjs +0 -19
  109. package/esm2022/providers/alert-controller.mjs +0 -19
  110. package/esm2022/providers/animation-controller.mjs +0 -38
  111. package/esm2022/providers/gesture-controller.mjs +0 -33
  112. package/esm2022/providers/loading-controller.mjs +0 -19
  113. package/esm2022/providers/menu-controller.mjs +0 -19
  114. package/esm2022/providers/modal-controller.mjs +0 -26
  115. package/esm2022/providers/popover-controller.mjs +0 -19
  116. package/esm2022/providers/toast-controller.mjs +0 -19
  117. package/esm2022/standalone/directives/angular-component-lib/utils.mjs +0 -59
  118. package/esm2022/standalone/directives/checkbox.mjs +0 -76
  119. package/esm2022/standalone/directives/datetime.mjs +0 -95
  120. package/esm2022/standalone/directives/icon.mjs +0 -35
  121. package/esm2022/standalone/directives/index.mjs +0 -13
  122. package/esm2022/standalone/directives/input-otp.mjs +0 -90
  123. package/esm2022/standalone/directives/input.mjs +0 -113
  124. package/esm2022/standalone/directives/proxies.mjs +0 -2228
  125. package/esm2022/standalone/directives/radio-group.mjs +0 -60
  126. package/esm2022/standalone/directives/range.mjs +0 -78
  127. package/esm2022/standalone/directives/searchbar.mjs +0 -82
  128. package/esm2022/standalone/directives/segment.mjs +0 -60
  129. package/esm2022/standalone/directives/select.mjs +0 -84
  130. package/esm2022/standalone/directives/textarea.mjs +0 -91
  131. package/esm2022/standalone/directives/toggle.mjs +0 -76
  132. package/esm2022/standalone/index.mjs +0 -24
  133. package/esm2022/standalone/ionic-angular-standalone.mjs +0 -5
  134. package/esm2022/standalone/navigation/back-button.mjs +0 -32
  135. package/esm2022/standalone/navigation/nav.mjs +0 -28
  136. package/esm2022/standalone/navigation/router-link-delegate.mjs +0 -28
  137. package/esm2022/standalone/navigation/router-outlet.mjs +0 -60
  138. package/esm2022/standalone/navigation/tabs.mjs +0 -58
  139. package/esm2022/standalone/overlays/modal.mjs +0 -32
  140. package/esm2022/standalone/overlays/popover.mjs +0 -28
  141. package/esm2022/standalone/providers/action-sheet-controller.mjs +0 -21
  142. package/esm2022/standalone/providers/alert-controller.mjs +0 -21
  143. package/esm2022/standalone/providers/animation-controller.mjs +0 -38
  144. package/esm2022/standalone/providers/gesture-controller.mjs +0 -33
  145. package/esm2022/standalone/providers/ionic-angular.mjs +0 -38
  146. package/esm2022/standalone/providers/loading-controller.mjs +0 -21
  147. package/esm2022/standalone/providers/menu-controller.mjs +0 -19
  148. package/esm2022/standalone/providers/modal-controller.mjs +0 -28
  149. package/esm2022/standalone/providers/popover-controller.mjs +0 -21
  150. package/esm2022/standalone/providers/toast-controller.mjs +0 -21
  151. package/index.d.ts +0 -26
  152. package/ionic-module.d.ts +0 -28
  153. package/providers/action-sheet-controller.d.ts +0 -8
  154. package/providers/alert-controller.d.ts +0 -8
  155. package/providers/animation-controller.d.ts +0 -25
  156. package/providers/gesture-controller.d.ts +0 -13
  157. package/providers/loading-controller.d.ts +0 -8
  158. package/providers/menu-controller.d.ts +0 -7
  159. package/providers/modal-controller.d.ts +0 -12
  160. package/providers/popover-controller.d.ts +0 -9
  161. package/providers/toast-controller.d.ts +0 -8
  162. package/standalone/directives/angular-component-lib/utils.d.ts +0 -9
  163. package/standalone/directives/checkbox.d.ts +0 -30
  164. package/standalone/directives/datetime.d.ts +0 -30
  165. package/standalone/directives/icon.d.ts +0 -9
  166. package/standalone/directives/index.d.ts +0 -12
  167. package/standalone/directives/input-otp.d.ts +0 -49
  168. package/standalone/directives/input.d.ts +0 -47
  169. package/standalone/directives/proxies.d.ts +0 -989
  170. package/standalone/directives/radio-group.d.ts +0 -18
  171. package/standalone/directives/range.d.ts +0 -47
  172. package/standalone/directives/searchbar.d.ts +0 -45
  173. package/standalone/directives/segment.d.ts +0 -19
  174. package/standalone/directives/select.d.ts +0 -34
  175. package/standalone/directives/textarea.d.ts +0 -37
  176. package/standalone/directives/toggle.d.ts +0 -28
  177. package/standalone/index.d.ts +0 -22
  178. package/standalone/navigation/back-button.d.ts +0 -9
  179. package/standalone/navigation/nav.d.ts +0 -8
  180. package/standalone/navigation/router-link-delegate.d.ts +0 -10
  181. package/standalone/navigation/router-outlet.d.ts +0 -25
  182. package/standalone/navigation/tabs.d.ts +0 -13
  183. package/standalone/overlays/modal.d.ts +0 -6
  184. package/standalone/overlays/popover.d.ts +0 -6
  185. package/standalone/providers/action-sheet-controller.d.ts +0 -8
  186. package/standalone/providers/alert-controller.d.ts +0 -8
  187. package/standalone/providers/animation-controller.d.ts +0 -25
  188. package/standalone/providers/gesture-controller.d.ts +0 -13
  189. package/standalone/providers/ionic-angular.d.ts +0 -7
  190. package/standalone/providers/loading-controller.d.ts +0 -8
  191. package/standalone/providers/menu-controller.d.ts +0 -7
  192. package/standalone/providers/modal-controller.d.ts +0 -12
  193. package/standalone/providers/popover-controller.d.ts +0 -9
  194. package/standalone/providers/toast-controller.d.ts +0 -8
@@ -1,203 +0,0 @@
1
- import { ApplicationRef, createComponent, inject, Injectable, InjectionToken, Injector, NgZone, } from '@angular/core';
2
- import { LIFECYCLE_DID_ENTER, LIFECYCLE_DID_LEAVE, LIFECYCLE_WILL_ENTER, LIFECYCLE_WILL_LEAVE, LIFECYCLE_WILL_UNLOAD, } from '@ionic/core/components';
3
- import { NavParams } from '../directives/navigation/nav-params';
4
- import { ConfigToken } from './config';
5
- import * as i0 from "@angular/core";
6
- // Token for injecting the modal element
7
- export const IonModalToken = new InjectionToken('IonModalToken');
8
- // TODO(FW-2827): types
9
- class AngularDelegate {
10
- zone = inject(NgZone);
11
- applicationRef = inject(ApplicationRef);
12
- config = inject(ConfigToken);
13
- create(environmentInjector, injector, elementReferenceKey, customInjector) {
14
- return new AngularFrameworkDelegate(environmentInjector, injector, this.applicationRef, this.zone, elementReferenceKey, this.config.useSetInputAPI ?? false, customInjector);
15
- }
16
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDelegate, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDelegate });
18
- }
19
- export { AngularDelegate };
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDelegate, decorators: [{
21
- type: Injectable
22
- }] });
23
- export class AngularFrameworkDelegate {
24
- environmentInjector;
25
- injector;
26
- applicationRef;
27
- zone;
28
- elementReferenceKey;
29
- enableSignalsSupport;
30
- customInjector;
31
- elRefMap = new WeakMap();
32
- elEventsMap = new WeakMap();
33
- constructor(environmentInjector, injector, applicationRef, zone, elementReferenceKey, enableSignalsSupport, customInjector) {
34
- this.environmentInjector = environmentInjector;
35
- this.injector = injector;
36
- this.applicationRef = applicationRef;
37
- this.zone = zone;
38
- this.elementReferenceKey = elementReferenceKey;
39
- this.enableSignalsSupport = enableSignalsSupport;
40
- this.customInjector = customInjector;
41
- }
42
- attachViewToDom(container, component, params, cssClasses) {
43
- return this.zone.run(() => {
44
- return new Promise((resolve) => {
45
- const componentProps = {
46
- ...params,
47
- };
48
- /**
49
- * Ionic Angular passes a reference to a modal
50
- * or popover that can be accessed using a
51
- * variable in the overlay component. If
52
- * elementReferenceKey is defined, then we should
53
- * pass a reference to the component using
54
- * elementReferenceKey as the key.
55
- */
56
- if (this.elementReferenceKey !== undefined) {
57
- componentProps[this.elementReferenceKey] = container;
58
- }
59
- const el = attachView(this.zone, this.environmentInjector, this.injector, this.applicationRef, this.elRefMap, this.elEventsMap, container, component, componentProps, cssClasses, this.elementReferenceKey, this.enableSignalsSupport, this.customInjector);
60
- resolve(el);
61
- });
62
- });
63
- }
64
- removeViewFromDom(_container, component) {
65
- return this.zone.run(() => {
66
- return new Promise((resolve) => {
67
- const componentRef = this.elRefMap.get(component);
68
- if (componentRef) {
69
- componentRef.destroy();
70
- this.elRefMap.delete(component);
71
- const unbindEvents = this.elEventsMap.get(component);
72
- if (unbindEvents) {
73
- unbindEvents();
74
- this.elEventsMap.delete(component);
75
- }
76
- }
77
- resolve();
78
- });
79
- });
80
- }
81
- }
82
- export const attachView = (zone, environmentInjector, injector, applicationRef, elRefMap, elEventsMap, container, component, params, cssClasses, elementReferenceKey, enableSignalsSupport, customInjector) => {
83
- /**
84
- * Wraps the injector with a custom injector that
85
- * provides NavParams to the component.
86
- *
87
- * NavParams is a legacy feature from Ionic v3 that allows
88
- * Angular developers to provide data to a component
89
- * and access it by providing NavParams as a dependency
90
- * in the constructor.
91
- *
92
- * The modern approach is to access the data directly
93
- * from the component's class instance.
94
- */
95
- const providers = getProviders(params);
96
- // If this is an ion-modal, provide the modal element as an injectable
97
- // so components inside the modal can inject it directly
98
- if (container.tagName.toLowerCase() === 'ion-modal') {
99
- providers.push({
100
- provide: IonModalToken,
101
- useValue: container,
102
- });
103
- }
104
- const childInjector = Injector.create({
105
- providers,
106
- parent: customInjector ?? injector,
107
- });
108
- const componentRef = createComponent(component, {
109
- environmentInjector,
110
- elementInjector: childInjector,
111
- });
112
- const instance = componentRef.instance;
113
- const hostElement = componentRef.location.nativeElement;
114
- if (params) {
115
- /**
116
- * For modals and popovers, a reference to the component is
117
- * added to `params` during the call to attachViewToDom. If
118
- * a reference using this name is already set, this means
119
- * the app is trying to use the name as a component prop,
120
- * which will cause collisions.
121
- */
122
- if (elementReferenceKey && instance[elementReferenceKey] !== undefined) {
123
- console.error(`[Ionic Error]: ${elementReferenceKey} is a reserved property when using ${container.tagName.toLowerCase()}. Rename or remove the "${elementReferenceKey}" property from ${component.name}.`);
124
- }
125
- /**
126
- * Angular 14.1 added support for setInput
127
- * so we need to fall back to Object.assign
128
- * for Angular 14.0.
129
- */
130
- if (enableSignalsSupport === true && componentRef.setInput !== undefined) {
131
- const { modal, popover, ...otherParams } = params;
132
- /**
133
- * Any key/value pairs set in componentProps
134
- * must be set as inputs on the component instance.
135
- */
136
- for (const key in otherParams) {
137
- componentRef.setInput(key, otherParams[key]);
138
- }
139
- /**
140
- * Using setInput will cause an error when
141
- * setting modal/popover on a component that
142
- * does not define them as an input. For backwards
143
- * compatibility purposes we fall back to using
144
- * Object.assign for these properties.
145
- */
146
- if (modal !== undefined) {
147
- Object.assign(instance, { modal });
148
- }
149
- if (popover !== undefined) {
150
- Object.assign(instance, { popover });
151
- }
152
- }
153
- else {
154
- Object.assign(instance, params);
155
- }
156
- }
157
- if (cssClasses) {
158
- for (const cssClass of cssClasses) {
159
- hostElement.classList.add(cssClass);
160
- }
161
- }
162
- const unbindEvents = bindLifecycleEvents(zone, instance, hostElement);
163
- container.appendChild(hostElement);
164
- applicationRef.attachView(componentRef.hostView);
165
- elRefMap.set(hostElement, componentRef);
166
- elEventsMap.set(hostElement, unbindEvents);
167
- return hostElement;
168
- };
169
- const LIFECYCLES = [
170
- LIFECYCLE_WILL_ENTER,
171
- LIFECYCLE_DID_ENTER,
172
- LIFECYCLE_WILL_LEAVE,
173
- LIFECYCLE_DID_LEAVE,
174
- LIFECYCLE_WILL_UNLOAD,
175
- ];
176
- export const bindLifecycleEvents = (zone, instance, element) => {
177
- return zone.run(() => {
178
- const unregisters = LIFECYCLES.filter((eventName) => typeof instance[eventName] === 'function').map((eventName) => {
179
- const handler = (ev) => instance[eventName](ev.detail);
180
- element.addEventListener(eventName, handler);
181
- return () => element.removeEventListener(eventName, handler);
182
- });
183
- return () => unregisters.forEach((fn) => fn());
184
- });
185
- };
186
- const NavParamsToken = new InjectionToken('NavParamsToken');
187
- const getProviders = (params) => {
188
- return [
189
- {
190
- provide: NavParamsToken,
191
- useValue: params,
192
- },
193
- {
194
- provide: NavParams,
195
- useFactory: provideNavParamsInjectable,
196
- deps: [NavParamsToken],
197
- },
198
- ];
199
- };
200
- const provideNavParamsInjectable = (params) => {
201
- return new NavParams(params);
202
- };
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1kZWxlZ2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvcHJvdmlkZXJzL2FuZ3VsYXItZGVsZWdhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFFZCxlQUFlLEVBRWYsTUFBTSxFQUNOLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUV2Qyx3Q0FBd0M7QUFDeEMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFzQixlQUFlLENBQUMsQ0FBQztBQUV0Rix1QkFBdUI7QUFFdkIsTUFDYSxlQUFlO0lBQ2xCLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEIsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXJDLE1BQU0sQ0FDSixtQkFBd0MsRUFDeEMsUUFBa0IsRUFDbEIsbUJBQTRCLEVBQzVCLGNBQXlCO1FBRXpCLE9BQU8sSUFBSSx3QkFBd0IsQ0FDakMsbUJBQW1CLEVBQ25CLFFBQVEsRUFDUixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsSUFBSSxFQUNULG1CQUFtQixFQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxLQUFLLEVBQ25DLGNBQWMsQ0FDZixDQUFDO0lBQ0osQ0FBQzsySEFwQlUsZUFB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QUNsQixVQUFVLEVBQUUsMEJBQTBCO1lBQ3RDLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQztTQUN2QjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLDBCQUEwQixHQUFHLENBQUMsTUFBOEIsRUFBRSxFQUFFO0lBQ3BFLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENvbXBvbmVudFJlZixcbiAgY3JlYXRlQ29tcG9uZW50LFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBpbmplY3QsXG4gIEluamVjdGFibGUsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZyYW1ld29ya0RlbGVnYXRlLFxuICBMSUZFQ1lDTEVfRElEX0VOVEVSLFxuICBMSUZFQ1lDTEVfRElEX0xFQVZFLFxuICBMSUZFQ1lDTEVfV0lMTF9FTlRFUixcbiAgTElGRUNZQ0xFX1dJTExfTEVBVkUsXG4gIExJRkVDWUNMRV9XSUxMX1VOTE9BRCxcbn0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IE5hdlBhcmFtcyB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvbmF2aWdhdGlvbi9uYXYtcGFyYW1zJztcblxuaW1wb3J0IHsgQ29uZmlnVG9rZW4gfSBmcm9tICcuL2NvbmZpZyc7XG5cbi8vIFRva2VuIGZvciBpbmplY3RpbmcgdGhlIG1vZGFsIGVsZW1lbnRcbmV4cG9ydCBjb25zdCBJb25Nb2RhbFRva2VuID0gbmV3IEluamVjdGlvblRva2VuPEhUTUxJb25Nb2RhbEVsZW1lbnQ+KCdJb25Nb2RhbFRva2VuJyk7XG5cbi8vIFRPRE8oRlctMjgyNyk6IHR5cGVzXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRGVsZWdhdGUge1xuICBwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBhcHBsaWNhdGlvblJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KENvbmZpZ1Rva2VuKTtcblxuICBjcmVhdGUoXG4gICAgZW52aXJvbm1lbnRJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgZWxlbWVudFJlZmVyZW5jZUtleT86IHN0cmluZyxcbiAgICBjdXN0b21JbmplY3Rvcj86IEluamVjdG9yXG4gICk6IEFuZ3VsYXJGcmFtZXdvcmtEZWxlZ2F0ZSB7XG4gICAgcmV0dXJuIG5ldyBBbmd1bGFyRnJhbWV3b3JrRGVsZWdhdGUoXG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgaW5qZWN0b3IsXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLFxuICAgICAgdGhpcy56b25lLFxuICAgICAgZWxlbWVudFJlZmVyZW5jZUtleSxcbiAgICAgIHRoaXMuY29uZmlnLnVzZVNldElucHV0QVBJID8/IGZhbHNlLFxuICAgICAgY3VzdG9tSW5qZWN0b3JcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyRnJhbWV3b3JrRGVsZWdhdGUgaW1wbGVtZW50cyBGcmFtZXdvcmtEZWxlZ2F0ZSB7XG4gIHByaXZhdGUgZWxSZWZNYXAgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgQ29tcG9uZW50UmVmPGFueT4+KCk7XG4gIHByaXZhdGUgZWxFdmVudHNNYXAgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgKCkgPT4gdm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlS2V5Pzogc3RyaW5nLFxuICAgIHByaXZhdGUgZW5hYmxlU2lnbmFsc1N1cHBvcnQ/OiBib29sZWFuLFxuICAgIHByaXZhdGUgY3VzdG9tSW5qZWN0b3I/OiBJbmplY3RvclxuICApIHt9XG5cbiAgYXR0YWNoVmlld1RvRG9tKGNvbnRhaW5lcjogYW55LCBjb21wb25lbnQ6IGFueSwgcGFyYW1zPzogYW55LCBjc3NDbGFzc2VzPzogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCBjb21wb25lbnRQcm9wcyA9IHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElvbmljIEFuZ3VsYXIgcGFzc2VzIGEgcmVmZXJlbmNlIHRvIGEgbW9kYWxcbiAgICAgICAgICogb3IgcG9wb3ZlciB0aGF0IGNhbiBiZSBhY2Nlc3NlZCB1c2luZyBhXG4gICAgICAgICAqIHZhcmlhYmxlIGluIHRoZSBvdmVybGF5IGNvbXBvbmVudC4gSWZcbiAgICAgICAgICogZWxlbWVudFJlZmVyZW5jZUtleSBpcyBkZWZpbmVkLCB0aGVuIHdlIHNob3VsZFxuICAgICAgICAgKiBwYXNzIGEgcmVmZXJlbmNlIHRvIHRoZSBjb21wb25lbnQgdXNpbmdcbiAgICAgICAgICogZWxlbWVudFJlZmVyZW5jZUtleSBhcyB0aGUga2V5LlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudFJlZmVyZW5jZUtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29tcG9uZW50UHJvcHNbdGhpcy5lbGVtZW50UmVmZXJlbmNlS2V5XSA9IGNvbnRhaW5lcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsID0gYXR0YWNoVmlldyhcbiAgICAgICAgICB0aGlzLnpvbmUsXG4gICAgICAgICAgdGhpcy5lbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZixcbiAgICAgICAgICB0aGlzLmVsUmVmTWFwLFxuICAgICAgICAgIHRoaXMuZWxFdmVudHNNYXAsXG4gICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICBjb21wb25lbnRQcm9wcyxcbiAgICAgICAgICBjc3NDbGFzc2VzLFxuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZmVyZW5jZUtleSxcbiAgICAgICAgICB0aGlzLmVuYWJsZVNpZ25hbHNTdXBwb3J0LFxuICAgICAgICAgIHRoaXMuY3VzdG9tSW5qZWN0b3JcbiAgICAgICAgKTtcbiAgICAgICAgcmVzb2x2ZShlbCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZVZpZXdGcm9tRG9tKF9jb250YWluZXI6IGFueSwgY29tcG9uZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5lbFJlZk1hcC5nZXQoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFJlZikge1xuICAgICAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgdGhpcy5lbFJlZk1hcC5kZWxldGUoY29tcG9uZW50KTtcbiAgICAgICAgICBjb25zdCB1bmJpbmRFdmVudHMgPSB0aGlzLmVsRXZlbnRzTWFwLmdldChjb21wb25lbnQpO1xuICAgICAgICAgIGlmICh1bmJpbmRFdmVudHMpIHtcbiAgICAgICAgICAgIHVuYmluZEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5lbEV2ZW50c01hcC5kZWxldGUoY29tcG9uZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGF0dGFjaFZpZXcgPSAoXG4gIHpvbmU6IE5nWm9uZSxcbiAgZW52aXJvbm1lbnRJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxuICBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gIGVsUmVmTWFwOiBXZWFrTWFwPEhUTUxFbGVtZW50LCBDb21wb25lbnRSZWY8YW55Pj4sXG4gIGVsRXZlbnRzTWFwOiBXZWFrTWFwPEhUTUxFbGVtZW50LCAoKSA9PiB2b2lkPixcbiAgY29udGFpbmVyOiBhbnksXG4gIGNvbXBvbmVudDogYW55LFxuICBwYXJhbXM6IGFueSxcbiAgY3NzQ2xhc3Nlczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIGVsZW1lbnRSZWZlcmVuY2VLZXk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZW5hYmxlU2lnbmFsc1N1cHBvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIGN1c3RvbUluamVjdG9yPzogSW5qZWN0b3Jcbik6IGFueSA9PiB7XG4gIC8qKlxuICAgKiBXcmFwcyB0aGUgaW5qZWN0b3Igd2l0aCBhIGN1c3RvbSBpbmplY3RvciB0aGF0XG4gICAqIHByb3ZpZGVzIE5hdlBhcmFtcyB0byB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBOYXZQYXJhbXMgaXMgYSBsZWdhY3kgZmVhdHVyZSBmcm9tIElvbmljIHYzIHRoYXQgYWxsb3dzXG4gICAqIEFuZ3VsYXIgZGV2ZWxvcGVycyB0byBwcm92aWRlIGRhdGEgdG8gYSBjb21wb25lbnRcbiAgICogYW5kIGFjY2VzcyBpdCBieSBwcm92aWRpbmcgTmF2UGFyYW1zIGFzIGEgZGVwZW5kZW5jeVxuICAgKiBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIFRoZSBtb2Rlcm4gYXBwcm9hY2ggaXMgdG8gYWNjZXNzIHRoZSBkYXRhIGRpcmVjdGx5XG4gICAqIGZyb20gdGhlIGNvbXBvbmVudCdzIGNsYXNzIGluc3RhbmNlLlxuICAgKi9cbiAgY29uc3QgcHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKHBhcmFtcyk7XG5cbiAgLy8gSWYgdGhpcyBpcyBhbiBpb24tbW9kYWwsIHByb3ZpZGUgdGhlIG1vZGFsIGVsZW1lbnQgYXMgYW4gaW5qZWN0YWJsZVxuICAvLyBzbyBjb21wb25lbnRzIGluc2lkZSB0aGUgbW9kYWwgY2FuIGluamVjdCBpdCBkaXJlY3RseVxuICBpZiAoY29udGFpbmVyLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lvbi1tb2RhbCcpIHtcbiAgICBwcm92aWRlcnMucHVzaCh7XG4gICAgICBwcm92aWRlOiBJb25Nb2RhbFRva2VuLFxuICAgICAgdXNlVmFsdWU6IGNvbnRhaW5lcixcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNoaWxkSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgIHByb3ZpZGVycyxcbiAgICBwYXJlbnQ6IGN1c3RvbUluamVjdG9yID8/IGluamVjdG9yLFxuICB9KTtcblxuICBjb25zdCBjb21wb25lbnRSZWYgPSBjcmVhdGVDb21wb25lbnQ8YW55Pihjb21wb25lbnQsIHtcbiAgICBlbnZpcm9ubWVudEluamVjdG9yLFxuICAgIGVsZW1lbnRJbmplY3RvcjogY2hpbGRJbmplY3RvcixcbiAgfSk7XG5cbiAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gIGNvbnN0IGhvc3RFbGVtZW50ID0gY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgaWYgKHBhcmFtcykge1xuICAgIC8qKlxuICAgICAqIEZvciBtb2RhbHMgYW5kIHBvcG92ZXJzLCBhIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IGlzXG4gICAgICogYWRkZWQgdG8gYHBhcmFtc2AgZHVyaW5nIHRoZSBjYWxsIHRvIGF0dGFjaFZpZXdUb0RvbS4gSWZcbiAgICAgKiBhIHJlZmVyZW5jZSB1c2luZyB0aGlzIG5hbWUgaXMgYWxyZWFkeSBzZXQsIHRoaXMgbWVhbnNcbiAgICAgKiB0aGUgYXBwIGlzIHRyeWluZyB0byB1c2UgdGhlIG5hbWUgYXMgYSBjb21wb25lbnQgcHJvcCxcbiAgICAgKiB3aGljaCB3aWxsIGNhdXNlIGNvbGxpc2lvbnMuXG4gICAgICovXG4gICAgaWYgKGVsZW1lbnRSZWZlcmVuY2VLZXkgJiYgaW5zdGFuY2VbZWxlbWVudFJlZmVyZW5jZUtleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFtJb25pYyBFcnJvcl06ICR7ZWxlbWVudFJlZmVyZW5jZUtleX0gaXMgYSByZXNlcnZlZCBwcm9wZXJ0eSB3aGVuIHVzaW5nICR7Y29udGFpbmVyLnRhZ05hbWUudG9Mb3dlckNhc2UoKX0uIFJlbmFtZSBvciByZW1vdmUgdGhlIFwiJHtlbGVtZW50UmVmZXJlbmNlS2V5fVwiIHByb3BlcnR5IGZyb20gJHtcbiAgICAgICAgICBjb21wb25lbnQubmFtZVxuICAgICAgICB9LmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW5ndWxhciAxNC4xIGFkZGVkIHN1cHBvcnQgZm9yIHNldElucHV0XG4gICAgICogc28gd2UgbmVlZCB0byBmYWxsIGJhY2sgdG8gT2JqZWN0LmFzc2lnblxuICAgICAqIGZvciBBbmd1bGFyIDE0LjAuXG4gICAgICovXG4gICAgaWYgKGVuYWJsZVNpZ25hbHNTdXBwb3J0ID09PSB0cnVlICYmIGNvbXBvbmVudFJlZi5zZXRJbnB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB7IG1vZGFsLCBwb3BvdmVyLCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xuICAgICAgLyoqXG4gICAgICAgKiBBbnkga2V5L3ZhbHVlIHBhaXJzIHNldCBpbiBjb21wb25lbnRQcm9wc1xuICAgICAgICogbXVzdCBiZSBzZXQgYXMgaW5wdXRzIG9uIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAgICAgKi9cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG90aGVyUGFyYW1zKSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChrZXksIG90aGVyUGFyYW1zW2tleV0pO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFVzaW5nIHNldElucHV0IHdpbGwgY2F1c2UgYW4gZXJyb3Igd2hlblxuICAgICAgICogc2V0dGluZyBtb2RhbC9wb3BvdmVyIG9uIGEgY29tcG9uZW50IHRoYXRcbiAgICAgICAqIGRvZXMgbm90IGRlZmluZSB0aGVtIGFzIGFuIGlucHV0LiBGb3IgYmFja3dhcmRzXG4gICAgICAgKiBjb21wYXRpYmlsaXR5IHB1cnBvc2VzIHdlIGZhbGwgYmFjayB0byB1c2luZ1xuICAgICAgICogT2JqZWN0LmFzc2lnbiBmb3IgdGhlc2UgcHJvcGVydGllcy5cbiAgICAgICAqL1xuICAgICAgaWYgKG1vZGFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihpbnN0YW5jZSwgeyBtb2RhbCB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBvcG92ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGluc3RhbmNlLCB7IHBvcG92ZXIgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oaW5zdGFuY2UsIHBhcmFtcyk7XG4gICAgfVxuICB9XG4gIGlmIChjc3NDbGFzc2VzKSB7XG4gICAgZm9yIChjb25zdCBjc3NDbGFzcyBvZiBjc3NDbGFzc2VzKSB7XG4gICAgICBob3N0RWxlbWVudC5jbGFzc0xpc3QuYWRkKGNzc0NsYXNzKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdW5iaW5kRXZlbnRzID0gYmluZExpZmVjeWNsZUV2ZW50cyh6b25lLCBpbnN0YW5jZSwgaG9zdEVsZW1lbnQpO1xuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaG9zdEVsZW1lbnQpO1xuXG4gIGFwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblxuICBlbFJlZk1hcC5zZXQoaG9zdEVsZW1lbnQsIGNvbXBvbmVudFJlZik7XG4gIGVsRXZlbnRzTWFwLnNldChob3N0RWxlbWVudCwgdW5iaW5kRXZlbnRzKTtcbiAgcmV0dXJuIGhvc3RFbGVtZW50O1xufTtcblxuY29uc3QgTElGRUNZQ0xFUyA9IFtcbiAgTElGRUNZQ0xFX1dJTExfRU5URVIsXG4gIExJRkVDWUNMRV9ESURfRU5URVIsXG4gIExJRkVDWUNMRV9XSUxMX0xFQVZFLFxuICBMSUZFQ1lDTEVfRElEX0xFQVZFLFxuICBMSUZFQ1lDTEVfV0lMTF9VTkxPQUQsXG5dO1xuXG5leHBvcnQgY29uc3QgYmluZExpZmVjeWNsZUV2ZW50cyA9ICh6b25lOiBOZ1pvbmUsIGluc3RhbmNlOiBhbnksIGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogKCgpID0+IHZvaWQpID0+IHtcbiAgcmV0dXJuIHpvbmUucnVuKCgpID0+IHtcbiAgICBjb25zdCB1bnJlZ2lzdGVycyA9IExJRkVDWUNMRVMuZmlsdGVyKChldmVudE5hbWUpID0+IHR5cGVvZiBpbnN0YW5jZVtldmVudE5hbWVdID09PSAnZnVuY3Rpb24nKS5tYXAoKGV2ZW50TmFtZSkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlciA9IChldjogYW55KSA9PiBpbnN0YW5jZVtldmVudE5hbWVdKGV2LmRldGFpbCk7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyKTtcbiAgICAgIHJldHVybiAoKSA9PiBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyKTtcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4gdW5yZWdpc3RlcnMuZm9yRWFjaCgoZm4pID0+IGZuKCkpO1xuICB9KTtcbn07XG5cbmNvbnN0IE5hdlBhcmFtc1Rva2VuID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ05hdlBhcmFtc1Rva2VuJyk7XG5cbmNvbnN0IGdldFByb3ZpZGVycyA9IChwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOYXZQYXJhbXNUb2tlbixcbiAgICAgIHVzZVZhbHVlOiBwYXJhbXMsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOYXZQYXJhbXMsXG4gICAgICB1c2VGYWN0b3J5OiBwcm92aWRlTmF2UGFyYW1zSW5qZWN0YWJsZSxcbiAgICAgIGRlcHM6IFtOYXZQYXJhbXNUb2tlbl0sXG4gICAgfSxcbiAgXTtcbn07XG5cbmNvbnN0IHByb3ZpZGVOYXZQYXJhbXNJbmplY3RhYmxlID0gKHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4ge1xuICByZXR1cm4gbmV3IE5hdlBhcmFtcyhwYXJhbXMpO1xufTtcbiJdfQ==
@@ -1,45 +0,0 @@
1
- import { Injectable, InjectionToken } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- class Config {
4
- get(key, fallback) {
5
- const c = getConfig();
6
- if (c) {
7
- return c.get(key, fallback);
8
- }
9
- return null;
10
- }
11
- getBoolean(key, fallback) {
12
- const c = getConfig();
13
- if (c) {
14
- return c.getBoolean(key, fallback);
15
- }
16
- return false;
17
- }
18
- getNumber(key, fallback) {
19
- const c = getConfig();
20
- if (c) {
21
- return c.getNumber(key, fallback);
22
- }
23
- return 0;
24
- }
25
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Config, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Config, providedIn: 'root' });
27
- }
28
- export { Config };
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Config, decorators: [{
30
- type: Injectable,
31
- args: [{
32
- providedIn: 'root',
33
- }]
34
- }] });
35
- export const ConfigToken = new InjectionToken('USERCONFIG');
36
- const getConfig = () => {
37
- if (typeof window !== 'undefined') {
38
- const Ionic = window.Ionic;
39
- if (Ionic?.config) {
40
- return Ionic.config;
41
- }
42
- }
43
- return null;
44
- };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tbW9uL3NyYy9wcm92aWRlcnMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszRCxNQUdhLE1BQU07SUFDakIsR0FBRyxDQUFDLEdBQXNCLEVBQUUsUUFBYztRQUN4QyxNQUFNLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsRUFBRTtZQUNMLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBc0IsRUFBRSxRQUFrQjtRQUNuRCxNQUFNLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsRUFBRTtZQUNMLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBc0IsRUFBRSxRQUFpQjtRQUNqRCxNQUFNLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsRUFBRTtZQUNMLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDbkM7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7MkhBdkJVLE1BQU07K0hBQU4sTUFBTSxjQUZMLE1BQU07O1NBRVAsTUFBTTs0RkFBTixNQUFNO2tCQUhsQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUEyQkQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFNLFlBQVksQ0FBQyxDQUFDO0FBRWpFLE1BQU0sU0FBUyxHQUFHLEdBQXNCLEVBQUU7SUFDeEMsSUFBSSxPQUFRLE1BQWMsS0FBSyxXQUFXLEVBQUU7UUFDMUMsTUFBTSxLQUFLLEdBQUksTUFBNkIsQ0FBQyxLQUFLLENBQUM7UUFDbkQsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQ2pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUNyQjtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgYXMgQ29yZUNvbmZpZywgSW9uaWNDb25maWcgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuaW1wb3J0IHsgSW9uaWNXaW5kb3cgfSBmcm9tICcuLi90eXBlcy9pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZyB7XG4gIGdldChrZXk6IGtleW9mIElvbmljQ29uZmlnLCBmYWxsYmFjaz86IGFueSk6IGFueSB7XG4gICAgY29uc3QgYyA9IGdldENvbmZpZygpO1xuICAgIGlmIChjKSB7XG4gICAgICByZXR1cm4gYy5nZXQoa2V5LCBmYWxsYmFjayk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0Qm9vbGVhbihrZXk6IGtleW9mIElvbmljQ29uZmlnLCBmYWxsYmFjaz86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBjb25zdCBjID0gZ2V0Q29uZmlnKCk7XG4gICAgaWYgKGMpIHtcbiAgICAgIHJldHVybiBjLmdldEJvb2xlYW4oa2V5LCBmYWxsYmFjayk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldE51bWJlcihrZXk6IGtleW9mIElvbmljQ29uZmlnLCBmYWxsYmFjaz86IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgYyA9IGdldENvbmZpZygpO1xuICAgIGlmIChjKSB7XG4gICAgICByZXR1cm4gYy5nZXROdW1iZXIoa2V5LCBmYWxsYmFjayk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDb25maWdUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdVU0VSQ09ORklHJyk7XG5cbmNvbnN0IGdldENvbmZpZyA9ICgpOiBDb3JlQ29uZmlnIHwgbnVsbCA9PiB7XG4gIGlmICh0eXBlb2YgKHdpbmRvdyBhcyBhbnkpICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IElvbmljID0gKHdpbmRvdyBhcyBhbnkgYXMgSW9uaWNXaW5kb3cpLklvbmljO1xuICAgIGlmIChJb25pYz8uY29uZmlnKSB7XG4gICAgICByZXR1cm4gSW9uaWMuY29uZmlnO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG4iXX0=
@@ -1,45 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- class DomController {
4
- /**
5
- * Schedules a task to run during the READ phase of the next frame.
6
- * This task should only read the DOM, but never modify it.
7
- */
8
- read(cb) {
9
- getQueue().read(cb);
10
- }
11
- /**
12
- * Schedules a task to run during the WRITE phase of the next frame.
13
- * This task should write the DOM, but never READ it.
14
- */
15
- write(cb) {
16
- getQueue().write(cb);
17
- }
18
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
19
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomController, providedIn: 'root' });
20
- }
21
- export { DomController };
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomController, decorators: [{
23
- type: Injectable,
24
- args: [{
25
- providedIn: 'root',
26
- }]
27
- }] });
28
- const getQueue = () => {
29
- const win = typeof window !== 'undefined' ? window : null;
30
- if (win != null) {
31
- const Ionic = win.Ionic;
32
- if (Ionic?.queue) {
33
- return Ionic.queue;
34
- }
35
- return {
36
- read: (cb) => win.requestAnimationFrame(cb),
37
- write: (cb) => win.requestAnimationFrame(cb),
38
- };
39
- }
40
- return {
41
- read: (cb) => cb(),
42
- write: (cb) => cb(),
43
- };
44
- };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21tb24vc3JjL3Byb3ZpZGVycy9kb20tY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUdhLGFBQWE7SUFDeEI7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEVBQWU7UUFDbEIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsRUFBZTtRQUNuQixRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQzsySEFmVSxhQUFhOytIQUFiLGFBQWEsY0FGWixNQUFNOztTQUVQLGFBQWE7NEZBQWIsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBbUJELE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtJQUNwQixNQUFNLEdBQUcsR0FBRyxPQUFRLE1BQWMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsSUFBWSxDQUFDO0lBRTVFLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtRQUNmLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFO1lBQ2hCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNwQjtRQUVELE9BQU87WUFDTCxJQUFJLEVBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7WUFDaEQsS0FBSyxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1NBQ2xELENBQUM7S0FDSDtJQUVELE9BQU87UUFDTCxJQUFJLEVBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN2QixLQUFLLEVBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtLQUN6QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRG9tQ29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBTY2hlZHVsZXMgYSB0YXNrIHRvIHJ1biBkdXJpbmcgdGhlIFJFQUQgcGhhc2Ugb2YgdGhlIG5leHQgZnJhbWUuXG4gICAqIFRoaXMgdGFzayBzaG91bGQgb25seSByZWFkIHRoZSBET00sIGJ1dCBuZXZlciBtb2RpZnkgaXQuXG4gICAqL1xuICByZWFkKGNiOiBSYWZDYWxsYmFjayk6IHZvaWQge1xuICAgIGdldFF1ZXVlKCkucmVhZChjYik7XG4gIH1cblxuICAvKipcbiAgICogU2NoZWR1bGVzIGEgdGFzayB0byBydW4gZHVyaW5nIHRoZSBXUklURSBwaGFzZSBvZiB0aGUgbmV4dCBmcmFtZS5cbiAgICogVGhpcyB0YXNrIHNob3VsZCB3cml0ZSB0aGUgRE9NLCBidXQgbmV2ZXIgUkVBRCBpdC5cbiAgICovXG4gIHdyaXRlKGNiOiBSYWZDYWxsYmFjayk6IHZvaWQge1xuICAgIGdldFF1ZXVlKCkud3JpdGUoY2IpO1xuICB9XG59XG5cbmNvbnN0IGdldFF1ZXVlID0gKCkgPT4ge1xuICBjb25zdCB3aW4gPSB0eXBlb2YgKHdpbmRvdyBhcyBhbnkpICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IChudWxsIGFzIGFueSk7XG5cbiAgaWYgKHdpbiAhPSBudWxsKSB7XG4gICAgY29uc3QgSW9uaWMgPSB3aW4uSW9uaWM7XG4gICAgaWYgKElvbmljPy5xdWV1ZSkge1xuICAgICAgcmV0dXJuIElvbmljLnF1ZXVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZWFkOiAoY2I6IGFueSkgPT4gd2luLnJlcXVlc3RBbmltYXRpb25GcmFtZShjYiksXG4gICAgICB3cml0ZTogKGNiOiBhbnkpID0+IHdpbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHJlYWQ6IChjYjogYW55KSA9PiBjYigpLFxuICAgIHdyaXRlOiAoY2I6IGFueSkgPT4gY2IoKSxcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFJhZkNhbGxiYWNrID0gKHRpbWVTdGFtcD86IG51bWJlcikgPT4gdm9pZDtcbiJdfQ==
@@ -1,114 +0,0 @@
1
- export class MenuController {
2
- menuController;
3
- constructor(menuController) {
4
- this.menuController = menuController;
5
- }
6
- /**
7
- * Programmatically open the Menu.
8
- * @param [menuId] Optionally get the menu by its id, or side.
9
- * @return returns a promise when the menu is fully opened
10
- */
11
- open(menuId) {
12
- return this.menuController.open(menuId);
13
- }
14
- /**
15
- * Programmatically close the Menu. If no `menuId` is given as the first
16
- * argument then it'll close any menu which is open. If a `menuId`
17
- * is given then it'll close that exact menu.
18
- * @param [menuId] Optionally get the menu by its id, or side.
19
- * @return returns a promise when the menu is fully closed
20
- */
21
- close(menuId) {
22
- return this.menuController.close(menuId);
23
- }
24
- /**
25
- * Toggle the menu. If it's closed, it will open, and if opened, it
26
- * will close.
27
- * @param [menuId] Optionally get the menu by its id, or side.
28
- * @return returns a promise when the menu has been toggled
29
- */
30
- toggle(menuId) {
31
- return this.menuController.toggle(menuId);
32
- }
33
- /**
34
- * Used to enable or disable a menu. For example, there could be multiple
35
- * left menus, but only one of them should be able to be opened at the same
36
- * time. If there are multiple menus on the same side, then enabling one menu
37
- * will also automatically disable all the others that are on the same side.
38
- * @param [menuId] Optionally get the menu by its id, or side.
39
- * @return Returns the instance of the menu, which is useful for chaining.
40
- */
41
- enable(shouldEnable, menuId) {
42
- return this.menuController.enable(shouldEnable, menuId);
43
- }
44
- /**
45
- * Used to enable or disable the ability to swipe open the menu.
46
- * @param shouldEnable True if it should be swipe-able, false if not.
47
- * @param [menuId] Optionally get the menu by its id, or side.
48
- * @return Returns the instance of the menu, which is useful for chaining.
49
- */
50
- swipeGesture(shouldEnable, menuId) {
51
- return this.menuController.swipeGesture(shouldEnable, menuId);
52
- }
53
- /**
54
- * @param [menuId] Optionally get the menu by its id, or side.
55
- * @return Returns true if the specified menu is currently open, otherwise false.
56
- * If the menuId is not specified, it returns true if ANY menu is currenly open.
57
- */
58
- isOpen(menuId) {
59
- return this.menuController.isOpen(menuId);
60
- }
61
- /**
62
- * @param [menuId] Optionally get the menu by its id, or side.
63
- * @return Returns true if the menu is currently enabled, otherwise false.
64
- */
65
- isEnabled(menuId) {
66
- return this.menuController.isEnabled(menuId);
67
- }
68
- /**
69
- * Used to get a menu instance. If a `menuId` is not provided then it'll
70
- * return the first menu found. If a `menuId` is `left` or `right`, then
71
- * it'll return the enabled menu on that side. Otherwise, if a `menuId` is
72
- * provided, then it'll try to find the menu using the menu's `id`
73
- * property. If a menu is not found then it'll return `null`.
74
- * @param [menuId] Optionally get the menu by its id, or side.
75
- * @return Returns the instance of the menu if found, otherwise `null`.
76
- */
77
- get(menuId) {
78
- return this.menuController.get(menuId);
79
- }
80
- /**
81
- * @return Returns the instance of the menu already opened, otherwise `null`.
82
- */
83
- getOpen() {
84
- return this.menuController.getOpen();
85
- }
86
- /**
87
- * @return Returns an array of all menu instances.
88
- */
89
- getMenus() {
90
- return this.menuController.getMenus();
91
- }
92
- registerAnimation(name, animation) {
93
- return this.menuController.registerAnimation(name, animation);
94
- }
95
- isAnimating() {
96
- return this.menuController.isAnimating();
97
- }
98
- _getOpenSync() {
99
- return this.menuController._getOpenSync();
100
- }
101
- _createAnimation(type, menuCmp) {
102
- return this.menuController._createAnimation(type, menuCmp);
103
- }
104
- _register(menu) {
105
- return this.menuController._register(menu);
106
- }
107
- _unregister(menu) {
108
- return this.menuController._unregister(menu);
109
- }
110
- _setOpen(menu, shouldOpen, animated) {
111
- return this.menuController._setOpen(menu, shouldOpen, animated);
112
- }
113
- }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tbW9uL3NyYy9wcm92aWRlcnMvbWVudS1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxjQUFjO0lBQ0w7SUFBcEIsWUFBb0IsY0FBK0I7UUFBL0IsbUJBQWMsR0FBZCxjQUFjLENBQWlCO0lBQUcsQ0FBQztJQUV2RDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLE1BQWU7UUFDbEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE1BQWU7UUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFlBQXFCLEVBQUUsTUFBZTtRQUMzQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsWUFBcUIsRUFBRSxNQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLE1BQWU7UUFDdkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxHQUFHLENBQUMsTUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBWSxFQUFFLFNBQTJCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVksRUFBRSxPQUFjO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFXLEVBQUUsVUFBbUIsRUFBRSxRQUFpQjtRQUMxRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZW51Q29udHJvbGxlckksIEFuaW1hdGlvbkJ1aWxkZXIsIE1lbnVJLCBBbmltYXRpb24gfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuZXhwb3J0IGNsYXNzIE1lbnVDb250cm9sbGVyIGltcGxlbWVudHMgTWVudUNvbnRyb2xsZXJJIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZW51Q29udHJvbGxlcjogTWVudUNvbnRyb2xsZXJJKSB7fVxuXG4gIC8qKlxuICAgKiBQcm9ncmFtbWF0aWNhbGx5IG9wZW4gdGhlIE1lbnUuXG4gICAqIEBwYXJhbSBbbWVudUlkXSAgT3B0aW9uYWxseSBnZXQgdGhlIG1lbnUgYnkgaXRzIGlkLCBvciBzaWRlLlxuICAgKiBAcmV0dXJuIHJldHVybnMgYSBwcm9taXNlIHdoZW4gdGhlIG1lbnUgaXMgZnVsbHkgb3BlbmVkXG4gICAqL1xuICBvcGVuKG1lbnVJZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLm9wZW4obWVudUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9ncmFtbWF0aWNhbGx5IGNsb3NlIHRoZSBNZW51LiBJZiBubyBgbWVudUlkYCBpcyBnaXZlbiBhcyB0aGUgZmlyc3RcbiAgICogYXJndW1lbnQgdGhlbiBpdCdsbCBjbG9zZSBhbnkgbWVudSB3aGljaCBpcyBvcGVuLiBJZiBhIGBtZW51SWRgXG4gICAqIGlzIGdpdmVuIHRoZW4gaXQnbGwgY2xvc2UgdGhhdCBleGFjdCBtZW51LlxuICAgKiBAcGFyYW0gW21lbnVJZF0gIE9wdGlvbmFsbHkgZ2V0IHRoZSBtZW51IGJ5IGl0cyBpZCwgb3Igc2lkZS5cbiAgICogQHJldHVybiByZXR1cm5zIGEgcHJvbWlzZSB3aGVuIHRoZSBtZW51IGlzIGZ1bGx5IGNsb3NlZFxuICAgKi9cbiAgY2xvc2UobWVudUlkPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubWVudUNvbnRyb2xsZXIuY2xvc2UobWVudUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIG1lbnUuIElmIGl0J3MgY2xvc2VkLCBpdCB3aWxsIG9wZW4sIGFuZCBpZiBvcGVuZWQsIGl0XG4gICAqIHdpbGwgY2xvc2UuXG4gICAqIEBwYXJhbSBbbWVudUlkXSAgT3B0aW9uYWxseSBnZXQgdGhlIG1lbnUgYnkgaXRzIGlkLCBvciBzaWRlLlxuICAgKiBAcmV0dXJuIHJldHVybnMgYSBwcm9taXNlIHdoZW4gdGhlIG1lbnUgaGFzIGJlZW4gdG9nZ2xlZFxuICAgKi9cbiAgdG9nZ2xlKG1lbnVJZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLnRvZ2dsZShtZW51SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSBtZW51LiBGb3IgZXhhbXBsZSwgdGhlcmUgY291bGQgYmUgbXVsdGlwbGVcbiAgICogbGVmdCBtZW51cywgYnV0IG9ubHkgb25lIG9mIHRoZW0gc2hvdWxkIGJlIGFibGUgdG8gYmUgb3BlbmVkIGF0IHRoZSBzYW1lXG4gICAqIHRpbWUuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBtZW51cyBvbiB0aGUgc2FtZSBzaWRlLCB0aGVuIGVuYWJsaW5nIG9uZSBtZW51XG4gICAqIHdpbGwgYWxzbyBhdXRvbWF0aWNhbGx5IGRpc2FibGUgYWxsIHRoZSBvdGhlcnMgdGhhdCBhcmUgb24gdGhlIHNhbWUgc2lkZS5cbiAgICogQHBhcmFtIFttZW51SWRdICBPcHRpb25hbGx5IGdldCB0aGUgbWVudSBieSBpdHMgaWQsIG9yIHNpZGUuXG4gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIG1lbnUsIHdoaWNoIGlzIHVzZWZ1bCBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBlbmFibGUoc2hvdWxkRW5hYmxlOiBib29sZWFuLCBtZW51SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEhUTUxJb25NZW51RWxlbWVudCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmVuYWJsZShzaG91bGRFbmFibGUsIG1lbnVJZCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYWJpbGl0eSB0byBzd2lwZSBvcGVuIHRoZSBtZW51LlxuICAgKiBAcGFyYW0gc2hvdWxkRW5hYmxlICBUcnVlIGlmIGl0IHNob3VsZCBiZSBzd2lwZS1hYmxlLCBmYWxzZSBpZiBub3QuXG4gICAqIEBwYXJhbSBbbWVudUlkXSAgT3B0aW9uYWxseSBnZXQgdGhlIG1lbnUgYnkgaXRzIGlkLCBvciBzaWRlLlxuICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBtZW51LCB3aGljaCBpcyB1c2VmdWwgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgc3dpcGVHZXN0dXJlKHNob3VsZEVuYWJsZTogYm9vbGVhbiwgbWVudUlkPzogc3RyaW5nKTogUHJvbWlzZTxIVE1MSW9uTWVudUVsZW1lbnQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5tZW51Q29udHJvbGxlci5zd2lwZUdlc3R1cmUoc2hvdWxkRW5hYmxlLCBtZW51SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBbbWVudUlkXSBPcHRpb25hbGx5IGdldCB0aGUgbWVudSBieSBpdHMgaWQsIG9yIHNpZGUuXG4gICAqIEByZXR1cm4gUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgbWVudSBpcyBjdXJyZW50bHkgb3Blbiwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKiBJZiB0aGUgbWVudUlkIGlzIG5vdCBzcGVjaWZpZWQsIGl0IHJldHVybnMgdHJ1ZSBpZiBBTlkgbWVudSBpcyBjdXJyZW5seSBvcGVuLlxuICAgKi9cbiAgaXNPcGVuKG1lbnVJZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmlzT3BlbihtZW51SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBbbWVudUlkXSAgT3B0aW9uYWxseSBnZXQgdGhlIG1lbnUgYnkgaXRzIGlkLCBvciBzaWRlLlxuICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWVudSBpcyBjdXJyZW50bHkgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgaXNFbmFibGVkKG1lbnVJZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmlzRW5hYmxlZChtZW51SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZ2V0IGEgbWVudSBpbnN0YW5jZS4gSWYgYSBgbWVudUlkYCBpcyBub3QgcHJvdmlkZWQgdGhlbiBpdCdsbFxuICAgKiByZXR1cm4gdGhlIGZpcnN0IG1lbnUgZm91bmQuIElmIGEgYG1lbnVJZGAgaXMgYGxlZnRgIG9yIGByaWdodGAsIHRoZW5cbiAgICogaXQnbGwgcmV0dXJuIHRoZSBlbmFibGVkIG1lbnUgb24gdGhhdCBzaWRlLiBPdGhlcndpc2UsIGlmIGEgYG1lbnVJZGAgaXNcbiAgICogcHJvdmlkZWQsIHRoZW4gaXQnbGwgdHJ5IHRvIGZpbmQgdGhlIG1lbnUgdXNpbmcgdGhlIG1lbnUncyBgaWRgXG4gICAqIHByb3BlcnR5LiBJZiBhIG1lbnUgaXMgbm90IGZvdW5kIHRoZW4gaXQnbGwgcmV0dXJuIGBudWxsYC5cbiAgICogQHBhcmFtIFttZW51SWRdICBPcHRpb25hbGx5IGdldCB0aGUgbWVudSBieSBpdHMgaWQsIG9yIHNpZGUuXG4gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIG1lbnUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gICAqL1xuICBnZXQobWVudUlkPzogc3RyaW5nKTogUHJvbWlzZTxIVE1MSW9uTWVudUVsZW1lbnQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5tZW51Q29udHJvbGxlci5nZXQobWVudUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBtZW51IGFscmVhZHkgb3BlbmVkLCBvdGhlcndpc2UgYG51bGxgLlxuICAgKi9cbiAgZ2V0T3BlbigpOiBQcm9taXNlPEhUTUxJb25NZW51RWxlbWVudCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmdldE9wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIG1lbnUgaW5zdGFuY2VzLlxuICAgKi9cbiAgZ2V0TWVudXMoKTogUHJvbWlzZTxIVE1MSW9uTWVudUVsZW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmdldE1lbnVzKCk7XG4gIH1cblxuICByZWdpc3RlckFuaW1hdGlvbihuYW1lOiBzdHJpbmcsIGFuaW1hdGlvbjogQW5pbWF0aW9uQnVpbGRlcik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLnJlZ2lzdGVyQW5pbWF0aW9uKG5hbWUsIGFuaW1hdGlvbik7XG4gIH1cblxuICBpc0FuaW1hdGluZygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5tZW51Q29udHJvbGxlci5pc0FuaW1hdGluZygpO1xuICB9XG5cbiAgX2dldE9wZW5TeW5jKCk6IEhUTUxJb25NZW51RWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubWVudUNvbnRyb2xsZXIuX2dldE9wZW5TeW5jKCk7XG4gIH1cblxuICBfY3JlYXRlQW5pbWF0aW9uKHR5cGU6IHN0cmluZywgbWVudUNtcDogTWVudUkpOiBQcm9taXNlPEFuaW1hdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLl9jcmVhdGVBbmltYXRpb24odHlwZSwgbWVudUNtcCk7XG4gIH1cblxuICBfcmVnaXN0ZXIobWVudTogTWVudUkpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5tZW51Q29udHJvbGxlci5fcmVnaXN0ZXIobWVudSk7XG4gIH1cblxuICBfdW5yZWdpc3RlcihtZW51OiBNZW51SSk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLl91bnJlZ2lzdGVyKG1lbnUpO1xuICB9XG5cbiAgX3NldE9wZW4obWVudTogTWVudUksIHNob3VsZE9wZW46IGJvb2xlYW4sIGFuaW1hdGVkOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubWVudUNvbnRyb2xsZXIuX3NldE9wZW4obWVudSwgc2hvdWxkT3BlbiwgYW5pbWF0ZWQpO1xuICB9XG59XG4iXX0=