appium 2.0.0-beta.3 → 2.0.0-beta.30

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 (139) hide show
  1. package/README.md +10 -11
  2. package/build/lib/appium.d.ts +215 -0
  3. package/build/lib/appium.d.ts.map +1 -0
  4. package/build/lib/appium.js +238 -132
  5. package/build/lib/cli/args.d.ts +20 -0
  6. package/build/lib/cli/args.d.ts.map +1 -0
  7. package/build/lib/cli/args.js +96 -282
  8. package/build/lib/cli/driver-command.d.ts +36 -0
  9. package/build/lib/cli/driver-command.d.ts.map +1 -0
  10. package/build/lib/cli/driver-command.js +19 -12
  11. package/build/lib/cli/extension-command.d.ts +345 -0
  12. package/build/lib/cli/extension-command.d.ts.map +1 -0
  13. package/build/lib/cli/extension-command.js +171 -96
  14. package/build/lib/cli/extension.d.ts +14 -0
  15. package/build/lib/cli/extension.d.ts.map +1 -0
  16. package/build/lib/cli/extension.js +31 -16
  17. package/build/lib/cli/parser.d.ts +79 -0
  18. package/build/lib/cli/parser.d.ts.map +1 -0
  19. package/build/lib/cli/parser.js +152 -95
  20. package/build/lib/cli/plugin-command.d.ts +39 -0
  21. package/build/lib/cli/plugin-command.d.ts.map +1 -0
  22. package/build/lib/cli/plugin-command.js +18 -13
  23. package/build/lib/cli/utils.d.ts +29 -0
  24. package/build/lib/cli/utils.d.ts.map +1 -0
  25. package/build/lib/cli/utils.js +27 -3
  26. package/build/lib/config-file.d.ts +100 -0
  27. package/build/lib/config-file.d.ts.map +1 -0
  28. package/build/lib/config-file.js +136 -0
  29. package/build/lib/config.d.ts +40 -0
  30. package/build/lib/config.d.ts.map +1 -0
  31. package/build/lib/config.js +92 -67
  32. package/build/lib/constants.d.ts +48 -0
  33. package/build/lib/constants.d.ts.map +1 -0
  34. package/build/lib/constants.js +60 -0
  35. package/build/lib/extension/driver-config.d.ts +84 -0
  36. package/build/lib/extension/driver-config.d.ts.map +1 -0
  37. package/build/lib/extension/driver-config.js +190 -0
  38. package/build/lib/extension/extension-config.d.ts +170 -0
  39. package/build/lib/extension/extension-config.d.ts.map +1 -0
  40. package/build/lib/extension/extension-config.js +297 -0
  41. package/build/lib/extension/index.d.ts +39 -0
  42. package/build/lib/extension/index.d.ts.map +1 -0
  43. package/build/lib/extension/index.js +77 -0
  44. package/build/lib/extension/manifest.d.ts +174 -0
  45. package/build/lib/extension/manifest.d.ts.map +1 -0
  46. package/build/lib/extension/manifest.js +246 -0
  47. package/build/lib/extension/package-changed.d.ts +11 -0
  48. package/build/lib/extension/package-changed.d.ts.map +1 -0
  49. package/build/lib/extension/package-changed.js +68 -0
  50. package/build/lib/extension/plugin-config.d.ts +62 -0
  51. package/build/lib/extension/plugin-config.d.ts.map +1 -0
  52. package/build/lib/extension/plugin-config.js +87 -0
  53. package/build/lib/grid-register.d.ts +10 -0
  54. package/build/lib/grid-register.d.ts.map +1 -0
  55. package/build/lib/grid-register.js +21 -25
  56. package/build/lib/logger.d.ts +3 -0
  57. package/build/lib/logger.d.ts.map +1 -0
  58. package/build/lib/logger.js +4 -6
  59. package/build/lib/logsink.d.ts +4 -0
  60. package/build/lib/logsink.d.ts.map +1 -0
  61. package/build/lib/logsink.js +12 -16
  62. package/build/lib/main.d.ts +51 -0
  63. package/build/lib/main.d.ts.map +1 -0
  64. package/build/lib/main.js +174 -82
  65. package/build/lib/schema/arg-spec.d.ts +143 -0
  66. package/build/lib/schema/arg-spec.d.ts.map +1 -0
  67. package/build/lib/schema/arg-spec.js +119 -0
  68. package/build/lib/schema/cli-args.d.ts +19 -0
  69. package/build/lib/schema/cli-args.d.ts.map +1 -0
  70. package/build/lib/schema/cli-args.js +180 -0
  71. package/build/lib/schema/cli-transformers.d.ts +5 -0
  72. package/build/lib/schema/cli-transformers.d.ts.map +1 -0
  73. package/build/lib/schema/cli-transformers.js +74 -0
  74. package/build/lib/schema/index.d.ts +3 -0
  75. package/build/lib/schema/index.d.ts.map +1 -0
  76. package/build/lib/schema/index.js +34 -0
  77. package/build/lib/schema/keywords.d.ts +24 -0
  78. package/build/lib/schema/keywords.d.ts.map +1 -0
  79. package/build/lib/schema/keywords.js +70 -0
  80. package/build/lib/schema/schema.d.ts +259 -0
  81. package/build/lib/schema/schema.d.ts.map +1 -0
  82. package/build/lib/schema/schema.js +452 -0
  83. package/build/lib/utils.d.ts +66 -0
  84. package/build/lib/utils.d.ts.map +1 -0
  85. package/build/lib/utils.js +35 -139
  86. package/build/tsconfig.tsbuildinfo +1 -0
  87. package/index.js +11 -0
  88. package/lib/appium-config.schema.json +278 -0
  89. package/lib/appium.js +398 -155
  90. package/lib/cli/args.js +174 -377
  91. package/lib/cli/driver-command.js +22 -7
  92. package/lib/cli/extension-command.js +372 -177
  93. package/lib/cli/extension.js +32 -10
  94. package/lib/cli/parser.js +252 -83
  95. package/lib/cli/plugin-command.js +19 -6
  96. package/lib/cli/utils.js +22 -2
  97. package/lib/config-file.js +223 -0
  98. package/lib/config.js +169 -69
  99. package/lib/constants.js +78 -0
  100. package/lib/extension/driver-config.js +249 -0
  101. package/lib/extension/extension-config.js +458 -0
  102. package/lib/extension/index.js +102 -0
  103. package/lib/extension/manifest.js +486 -0
  104. package/lib/extension/package-changed.js +63 -0
  105. package/lib/extension/plugin-config.js +113 -0
  106. package/lib/grid-register.js +25 -22
  107. package/lib/logger.js +1 -1
  108. package/lib/logsink.js +14 -7
  109. package/lib/main.js +233 -83
  110. package/lib/schema/arg-spec.js +232 -0
  111. package/lib/schema/cli-args.js +261 -0
  112. package/lib/schema/cli-transformers.js +122 -0
  113. package/lib/schema/index.js +2 -0
  114. package/lib/schema/keywords.js +134 -0
  115. package/lib/schema/schema.js +734 -0
  116. package/lib/utils.js +85 -129
  117. package/package.json +62 -85
  118. package/scripts/postinstall.js +71 -0
  119. package/types/appium-manifest.d.ts +61 -0
  120. package/types/cli.d.ts +134 -0
  121. package/types/extension.d.ts +56 -0
  122. package/types/external-manifest.d.ts +58 -0
  123. package/types/index.d.ts +7 -0
  124. package/CHANGELOG.md +0 -3515
  125. package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
  126. package/build/lib/cli/npm.js +0 -206
  127. package/build/lib/cli/parser-helpers.js +0 -82
  128. package/build/lib/driver-config.js +0 -77
  129. package/build/lib/drivers.js +0 -96
  130. package/build/lib/extension-config.js +0 -251
  131. package/build/lib/plugin-config.js +0 -59
  132. package/build/lib/plugins.js +0 -14
  133. package/lib/cli/npm.js +0 -183
  134. package/lib/cli/parser-helpers.js +0 -79
  135. package/lib/driver-config.js +0 -46
  136. package/lib/drivers.js +0 -81
  137. package/lib/extension-config.js +0 -208
  138. package/lib/plugin-config.js +0 -34
  139. package/lib/plugins.js +0 -10
package/README.md CHANGED
@@ -1,15 +1,14 @@
1
1
  ## Appium
2
2
 
3
3
  [![NPM version](https://badge.fury.io/js/appium.svg)](https://npmjs.org/package/appium)
4
- [![Dependency Status](https://david-dm.org/appium/appium.svg)](https://david-dm.org/appium/appium)
5
- [![devDependency Status](https://david-dm.org/appium/appium/dev-status.svg)](https://david-dm.org/appium/appium#info=devDependencies)
4
+ [![Node.js CI](https://github.com/appium/appium/actions/workflows/node.js.yml/badge.svg?branch=2.0)](https://github.com/appium/appium/actions/workflows/node.js.yml)
6
5
 
7
6
  [![Monthly Downloads](https://img.shields.io/npm/dm/appium.svg)](https://npmjs.org/package/appium)
8
7
 
9
8
  [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium.svg?type=shield)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fappium%2Fappium?ref=badge_shield)
10
9
 
11
- Appium is an open source, cross-platform test automation tool for native,
12
- hybrid and mobile web and desktop apps. We support simulators (iOS), emulators
10
+ Appium is an open-source, cross-platform test automation tool for native,
11
+ hybrid, and mobile web and desktop apps. We support simulators (iOS), emulators
13
12
  (Android), and real devices (iOS, Android, Windows, Mac).
14
13
 
15
14
  Want to skip straight to the action? Check out our [getting
@@ -35,7 +34,7 @@ specific information about how that driver works and how to set it up:
35
34
  ### Why Appium?
36
35
 
37
36
  1. You don't have to recompile your app or modify it in any way, due
38
- to use of standard automation APIs on all platforms.
37
+ to the use of standard automation APIs on all platforms.
39
38
  2. You can write tests with your favorite dev tools using any
40
39
  [WebDriver](https://w3c.github.io/webdriver/webdriver-spec.html)-compatible
41
40
  language such as Java, Objective-C, JavaScript (Node), PHP, Python, Ruby,
@@ -43,22 +42,22 @@ specific information about how that driver works and how to set it up:
43
42
  client libraries](/docs/en/about-appium/appium-clients.md).
44
43
  3. You can use any testing framework.
45
44
  4. Appium has built-in mobile web and hybrid app support. Within the same
46
- script you can switch seamlessly between native app automation and webview
45
+ script, you can switch seamlessly between native app automation and webview
47
46
  automation, all using the WebDriver model that's already the standard for
48
47
  web automation.
49
48
 
50
49
  Investing in the
51
50
  [WebDriver](https://w3c.github.io/webdriver/webdriver-spec.html) protocol means
52
- you are betting on a single, free and open protocol for testing that has become
51
+ you are betting on a single, free, and open protocol for testing that has become
53
52
  a web standard. Don't lock yourself into a proprietary stack.
54
53
 
55
54
  For example, if you use Apple's XCUITest library without Appium you can only
56
55
  write tests using Obj-C/Swift, and you can only run tests through Xcode.
57
- Similarly, with Google's UiAutomator or Espresso you can only write tests in
56
+ Similarly, with Google's UiAutomator or Espresso, you can only write tests in
58
57
  Java/Kotlin. Appium opens up the possibility of true cross-platform native app
59
58
  automation, for mobile and beyond. Finally!
60
59
 
61
- If you're new to Appium, or want a more comprehensive description of what this is all
60
+ If you're new to Appium or want a more comprehensive description of what this is all
62
61
  about, please read our [Introduction to Appium
63
62
  Concepts](/docs/en/about-appium/intro.md).
64
63
 
@@ -74,7 +73,7 @@ Node.js 10+.
74
73
  Check out our [Getting Started](/docs/en/about-appium/getting-started.md) guide
75
74
  to get going with Appium.
76
75
 
77
- There is also sample code that contains [many examples of tests in a variety
76
+ There is also a sample code that contains [many examples of tests in a variety
78
77
  of different languages](https://github.com/appium/appium/tree/master/sample-code)!
79
78
 
80
79
  ### Documentation
@@ -92,7 +91,7 @@ Once the PR has been merged, the latest documentation will be in [appium.io](htt
92
91
  ### Contributing
93
92
 
94
93
  Please take a look at our [contribution documentation](CONTRIBUTING.md)
95
- for instructions on how to build, test and run Appium from source.
94
+ for instructions on how to build, test, and run Appium from the source.
96
95
 
97
96
  ### Roadmap
98
97
 
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Thrown when Appium tried to proxy a command using a driver's `proxyCommand` method but the
3
+ * method did not exist
4
+ */
5
+ export class NoDriverProxyCommandError extends Error {
6
+ constructor();
7
+ /**
8
+ * @type {Readonly<string>}
9
+ */
10
+ code: Readonly<string>;
11
+ }
12
+ export type ExternalDriver = import('@appium/types').ExternalDriver;
13
+ export type W3CCapabilities = import('@appium/types').W3CCapabilities;
14
+ export type DriverData = import('@appium/types').DriverData;
15
+ export type DriverOpts = import('@appium/types').DriverOpts;
16
+ export type Constraints = import('@appium/types').Constraints;
17
+ export type AppiumServer = import('@appium/types').AppiumServer;
18
+ export type ExtensionType = import('../types').ExtensionType;
19
+ export type PluginClass = import('../types/extension').PluginClass;
20
+ export type DriverConfig = import('./extension/driver-config').DriverConfig;
21
+ /**
22
+ * Used by {@linkcode AppiumDriver.createSession } and {@linkcode AppiumDriver.deleteSession } to describe
23
+ * result.
24
+ */
25
+ export type SessionHandlerResult<V> = {
26
+ value?: V | undefined;
27
+ error?: Error | undefined;
28
+ protocol?: string | undefined;
29
+ };
30
+ export type SessionHandler = import('@appium/types').SessionHandler<SessionHandlerResult<any[]>, SessionHandlerResult<void>>;
31
+ /**
32
+ * @implements {SessionHandler}
33
+ */
34
+ export class AppiumDriver extends DriverCore implements SessionHandler {
35
+ /**
36
+ * @param {DriverOpts} opts
37
+ */
38
+ constructor(opts: DriverOpts);
39
+ /**
40
+ * Access to sessions list must be guarded with a Semaphore, because
41
+ * it might be changed by other async calls at any time
42
+ * It is not recommended to access this property directly from the outside
43
+ * @type {Record<string,ExternalDriver>}
44
+ */
45
+ sessions: Record<string, ExternalDriver>;
46
+ /**
47
+ * Access to pending drivers list must be guarded with a Semaphore, because
48
+ * it might be changed by other async calls at any time
49
+ * It is not recommended to access this property directly from the outside
50
+ * @type {Record<string,ExternalDriver[]>}
51
+ */
52
+ pendingDrivers: Record<string, ExternalDriver[]>;
53
+ /**
54
+ * List of active plugins
55
+ * @type {PluginClass[]}
56
+ */
57
+ pluginClasses: PluginClass[];
58
+ /**
59
+ * map of sessions to actual plugin instances per session
60
+ * @type {Record<string,InstanceType<PluginClass>[]>}
61
+ */
62
+ sessionPlugins: Record<string, InstanceType<PluginClass>[]>;
63
+ /**
64
+ * some commands are sessionless, so we need a set of plugins for them
65
+ * @type {InstanceType<PluginClass>[]}
66
+ */
67
+ sessionlessPlugins: InstanceType<PluginClass>[];
68
+ /** @type {DriverConfig} */
69
+ driverConfig: DriverConfig;
70
+ /** @type {AppiumServer} */
71
+ server: AppiumServer;
72
+ desiredCapConstraints: Readonly<import("@appium/types").Constraints>;
73
+ args: {
74
+ address: string;
75
+ allowCors: boolean;
76
+ allowInsecure: import("@appium/types").AllowInsecureConfig;
77
+ basePath: string;
78
+ callbackAddress: string | undefined;
79
+ callbackPort: number;
80
+ debugLogSpacing: boolean;
81
+ defaultCapabilities: import("@appium/types").DefaultCapabilitiesConfig | undefined;
82
+ denyInsecure: import("@appium/types").DenyInsecureConfig;
83
+ driver: import("@appium/types").DriverConfig | undefined;
84
+ keepAliveTimeout: number;
85
+ localTimezone: boolean;
86
+ logFile: string | undefined;
87
+ logFilters: import("@appium/types").LogFiltersConfig | undefined;
88
+ loglevel: import("@appium/types").LogLevelConfig;
89
+ logNoColors: boolean;
90
+ logTimestamp: boolean;
91
+ longStacktrace: boolean;
92
+ noPermsCheck: boolean;
93
+ nodeconfig: import("@appium/types").NodeconfigConfig | undefined;
94
+ plugin: import("@appium/types").PluginConfig | undefined;
95
+ port: number;
96
+ relaxedSecurityEnabled: boolean;
97
+ sessionOverride: boolean;
98
+ strictCaps: boolean;
99
+ tmpDir: string | undefined;
100
+ traceDir: string | undefined;
101
+ useDrivers: import("@appium/types").UseDriversConfig;
102
+ usePlugins: import("@appium/types").UsePluginsConfig;
103
+ webhook: string | undefined;
104
+ };
105
+ sessionExists(sessionId: any): boolean;
106
+ driverForSession(sessionId: any): import("@appium/types").ExternalDriver;
107
+ getStatus(): Promise<{
108
+ build: import("../types").BuildInfo;
109
+ }>;
110
+ getSessions(): Promise<{
111
+ id: string;
112
+ capabilities: Partial<import("@wdio/types/build/Capabilities").Capabilities & import("@wdio/types/build/Capabilities").AppiumCapabilities & {
113
+ [x: string]: any;
114
+ }> | undefined;
115
+ }[]>;
116
+ printNewSessionAnnouncement(driverName: any, driverVersion: any, driverBaseVersion: any): void;
117
+ /**
118
+ * Validate and assign CLI args for a driver or plugin
119
+ *
120
+ * If the extension has provided a schema, validation has already happened.
121
+ *
122
+ * Any arg which is equal to its default value will not be assigned to the extension.
123
+ * @param {ExtensionType} extType 'driver' or 'plugin'
124
+ * @param {string} extName the name of the extension
125
+ * @param {Object} extInstance the driver or plugin instance
126
+ */
127
+ assignCliArgsToExtension(extType: ExtensionType, extName: string, extInstance: any): void;
128
+ /**
129
+ * Create a new session
130
+ * @param {W3CCapabilities} jsonwpCaps JSONWP formatted desired capabilities
131
+ * @param {W3CCapabilities} reqCaps Required capabilities (JSONWP standard)
132
+ * @param {W3CCapabilities} w3cCapabilities W3C capabilities
133
+ * @param {import('@appium/types').DriverData[]} [driverData]
134
+ */
135
+ createSession(jsonwpCaps: W3CCapabilities, reqCaps: W3CCapabilities, w3cCapabilities: W3CCapabilities, driverData?: import("@appium/types").DriverData[] | undefined): Promise<{
136
+ protocol: any;
137
+ error: any;
138
+ value?: undefined;
139
+ } | {
140
+ protocol: any;
141
+ value: any[];
142
+ error?: undefined;
143
+ }>;
144
+ attachUnexpectedShutdownHandler(driver: any, innerSessionId: any): void;
145
+ /**
146
+ *
147
+ * @param {import('../types/extension').DriverClass} InnerDriver
148
+ * @returns {Promise<DriverData[]>}}
149
+ */
150
+ curSessionDataForDriver(InnerDriver: BaseDriverBase<import("@appium/types").ExternalDriver, import("../types").ExternalDriverStatic>): Promise<DriverData[]>;
151
+ /**
152
+ * @param {string} sessionId
153
+ */
154
+ deleteSession(sessionId: string): Promise<{
155
+ protocol: undefined;
156
+ value: void;
157
+ error?: undefined;
158
+ } | {
159
+ protocol: undefined;
160
+ error: any;
161
+ value?: undefined;
162
+ }>;
163
+ deleteAllSessions(opts?: {}): Promise<void>;
164
+ /**
165
+ * Get the appropriate plugins for a session (or sessionless plugins)
166
+ *
167
+ * @param {?string} sessionId - the sessionId (or null) to use to find plugins
168
+ * @returns {Array} - array of plugin instances
169
+ */
170
+ pluginsForSession(sessionId?: string | null): any[];
171
+ /**
172
+ * To get plugins for a command, we either get the plugin instances associated with the
173
+ * particular command's session, or in the case of sessionless plugins, pull from the set of
174
+ * plugin instances reserved for sessionless commands (and we lazily create plugin instances on
175
+ * first use)
176
+ *
177
+ * @param {string} cmd - the name of the command to find a plugin to handle
178
+ * @param {?string} sessionId - the particular session for which to find a plugin, or null if
179
+ * sessionless
180
+ */
181
+ pluginsToHandleCmd(cmd: string, sessionId?: string | null): any[];
182
+ createPluginInstances(): import("../types").PluginProto[];
183
+ /**
184
+ *
185
+ * @param {string} cmd
186
+ * @param {...any} args
187
+ * @returns {Promise<{value: any, error?: Error, protocol: string} | import('type-fest').AsyncReturnType<import('@appium/types').Driver['executeCommand']>>}
188
+ */
189
+ executeCommand(cmd: string, ...args: any[]): Promise<any>;
190
+ wrapCommandWithPlugins({ driver, cmd, args, next, cmdHandledBy, plugins }: {
191
+ driver: any;
192
+ cmd: any;
193
+ args: any;
194
+ next: any;
195
+ cmdHandledBy: any;
196
+ plugins: any;
197
+ }): any;
198
+ logPluginHandlerReport(plugins: any, { cmd, cmdHandledBy }: {
199
+ cmd: any;
200
+ cmdHandledBy: any;
201
+ }): void;
202
+ executeWrappedCommand({ wrappedCmd, protocol }: {
203
+ wrappedCmd: any;
204
+ protocol: any;
205
+ }): Promise<{
206
+ value: any;
207
+ error: any;
208
+ protocol: any;
209
+ }>;
210
+ proxyActive(sessionId: any): boolean;
211
+ getProxyAvoidList(sessionId: any): [string, RegExp][];
212
+ canProxy(sessionId: any): boolean;
213
+ }
214
+ import { DriverCore } from "@appium/base-driver";
215
+ //# sourceMappingURL=appium.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appium.d.ts","sourceRoot":"","sources":["../../lib/appium.js"],"names":[],"mappings":"AA2sBA;;;GAGG;AACH;IAME,cAKC;IAVD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEgB;CAQ3C;6BAKY,OAAO,eAAe,EAAE,cAAc;8BACtC,OAAO,eAAe,EAAE,eAAe;yBACvC,OAAO,eAAe,EAAE,UAAU;yBAClC,OAAO,eAAe,EAAE,UAAU;0BAClC,OAAO,eAAe,EAAE,WAAW;2BACnC,OAAO,eAAe,EAAE,YAAY;4BACpC,OAAO,UAAU,EAAE,aAAa;0BAChC,OAAO,oBAAoB,EAAE,WAAW;2BACxC,OAAO,2BAA2B,EAAE,YAAY;;;;;;;;;;6BAchD,OAAO,eAAe,EAAE,cAAc,CAAC,qBAAqB,GAAG,EAAE,CAAC,EAAC,qBAAqB,IAAI,CAAC,CAAC;AAztB3G;;GAEG;AACH;IAgDE;;OAEG;IACH,kBAFW,UAAU,EAuBpB;IAvED;;;;;OAKG;IACH,UAFU,OAAO,MAAM,EAAC,cAAc,CAAC,CAEzB;IAEd;;;;;OAKG;IACH,gBAFU,OAAO,MAAM,EAAC,cAAc,EAAE,CAAC,CAErB;IASpB;;;OAGG;IACH,eAFU,WAAW,EAAE,CAEJ;IAEnB;;;OAGG;IACH,gBAFU,OAAO,MAAM,EAAC,aAAa,WAAW,CAAC,EAAE,CAAC,CAEhC;IAEpB;;;OAGG;IACH,oBAFU,aAAa,WAAW,CAAC,EAAE,CAEb;IAExB,2BAA2B;IAC3B,cADW,YAAY,CACV;IAEb,2BAA2B;IAC3B,QADW,YAAY,CAChB;IAgBL,qEAAyD;IAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAqB;IA4BvB,uCAGC;IAED,yEAEC;IAED;;OAIC;IAED;;;;;SAGC;IAED,+FAcC;IAED;;;;;;;;;OASG;IACH,kCAJW,aAAa,WACb,MAAM,0BAchB;IAED;;;;;;OAMG;IACH,0BALW,eAAe,WACf,eAAe,mBACf,eAAe;;;;;;;;OAqJzB;IAED,wEA8BC;IAED;;;;OAIG;IACH,uIAFa,QAAQ,UAAU,EAAE,CAAC,CAajC;IAED;;OAEG;IACH,yBAFW,MAAM;;;;;;;;OAwChB;IAED,4CAsBC;IAED;;;;;OAKG;IACH,8BAHY,MAAM,gBAejB;IAED;;;;;;;;;OASG;IACH,wBAJW,MAAM,cACL,MAAM,gBAQjB;IAED,0DAOC;IAED;;;;;OAKG;IACH,oBAJW,MAAM,WACF,GAAG,kBAsHjB;IAED;;;;;;;YAuBC;IAED;;;aAkBC;IAED;;;;;;;OAsBC;IAED,qCAGC;IAED,sDAGC;IAED,kCAGC;CACF"}