appium 2.0.0-beta.4 → 2.0.0-beta.42

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 (153) hide show
  1. package/README.md +10 -11
  2. package/build/lib/appium.d.ts +204 -0
  3. package/build/lib/appium.d.ts.map +1 -0
  4. package/build/lib/appium.js +256 -131
  5. package/build/lib/cli/args.d.ts +17 -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 +37 -0
  9. package/build/lib/cli/driver-command.d.ts.map +1 -0
  10. package/build/lib/cli/driver-command.js +27 -18
  11. package/build/lib/cli/extension-command.d.ts +376 -0
  12. package/build/lib/cli/extension-command.d.ts.map +1 -0
  13. package/build/lib/cli/extension-command.js +287 -156
  14. package/build/lib/cli/extension.d.ts +22 -0
  15. package/build/lib/cli/extension.d.ts.map +1 -0
  16. package/build/lib/cli/extension.js +31 -17
  17. package/build/lib/cli/parser.d.ts +84 -0
  18. package/build/lib/cli/parser.d.ts.map +1 -0
  19. package/build/lib/cli/parser.js +164 -94
  20. package/build/lib/cli/plugin-command.d.ts +34 -0
  21. package/build/lib/cli/plugin-command.d.ts.map +1 -0
  22. package/build/lib/cli/plugin-command.js +26 -19
  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 +49 -0
  30. package/build/lib/config.d.ts.map +1 -0
  31. package/build/lib/config.js +119 -96
  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 +81 -0
  36. package/build/lib/extension/driver-config.d.ts.map +1 -0
  37. package/build/lib/extension/driver-config.js +177 -0
  38. package/build/lib/extension/extension-config.d.ts +242 -0
  39. package/build/lib/extension/extension-config.d.ts.map +1 -0
  40. package/build/lib/extension/extension-config.js +436 -0
  41. package/build/lib/extension/index.d.ts +48 -0
  42. package/build/lib/extension/index.d.ts.map +1 -0
  43. package/build/lib/extension/index.js +75 -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 +256 -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 +66 -0
  50. package/build/lib/extension/plugin-config.d.ts +57 -0
  51. package/build/lib/extension/plugin-config.d.ts.map +1 -0
  52. package/build/lib/extension/plugin-config.js +78 -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 +14 -17
  62. package/build/lib/main.d.ts +55 -0
  63. package/build/lib/main.d.ts.map +1 -0
  64. package/build/lib/main.js +183 -91
  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 +178 -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 +450 -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/build/types/appium-manifest.d.ts +59 -0
  88. package/build/types/appium-manifest.d.ts.map +1 -0
  89. package/build/types/cli.d.ts +123 -0
  90. package/build/types/cli.d.ts.map +1 -0
  91. package/build/types/extension-manifest.d.ts +55 -0
  92. package/build/types/extension-manifest.d.ts.map +1 -0
  93. package/build/types/index.d.ts +16 -0
  94. package/build/types/index.d.ts.map +1 -0
  95. package/driver.d.ts +1 -0
  96. package/driver.js +14 -0
  97. package/index.js +11 -0
  98. package/lib/appium.js +520 -186
  99. package/lib/cli/args.js +267 -422
  100. package/lib/cli/driver-command.js +58 -23
  101. package/lib/cli/extension-command.js +613 -260
  102. package/lib/cli/extension.js +47 -17
  103. package/lib/cli/parser.js +263 -83
  104. package/lib/cli/plugin-command.js +48 -20
  105. package/lib/cli/utils.js +24 -10
  106. package/lib/config-file.js +219 -0
  107. package/lib/config.js +243 -110
  108. package/lib/constants.js +69 -0
  109. package/lib/extension/driver-config.js +249 -0
  110. package/lib/extension/extension-config.js +677 -0
  111. package/lib/extension/index.js +116 -0
  112. package/lib/extension/manifest.js +475 -0
  113. package/lib/extension/package-changed.js +64 -0
  114. package/lib/extension/plugin-config.js +113 -0
  115. package/lib/grid-register.js +49 -35
  116. package/lib/logger.js +1 -2
  117. package/lib/logsink.js +38 -33
  118. package/lib/main.js +308 -100
  119. package/lib/schema/arg-spec.js +229 -0
  120. package/lib/schema/cli-args.js +238 -0
  121. package/lib/schema/cli-transformers.js +115 -0
  122. package/lib/schema/index.js +2 -0
  123. package/lib/schema/keywords.js +136 -0
  124. package/lib/schema/schema.js +717 -0
  125. package/lib/utils.js +121 -140
  126. package/package.json +85 -85
  127. package/plugin.d.ts +1 -0
  128. package/plugin.js +13 -0
  129. package/scripts/autoinstall-extensions.js +185 -0
  130. package/support.d.ts +1 -0
  131. package/support.js +13 -0
  132. package/test.d.ts +7 -0
  133. package/test.js +13 -0
  134. package/types/appium-manifest.ts +73 -0
  135. package/types/cli.ts +150 -0
  136. package/types/extension-manifest.ts +64 -0
  137. package/types/index.ts +21 -0
  138. package/CHANGELOG.md +0 -3515
  139. package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
  140. package/build/lib/cli/npm.js +0 -206
  141. package/build/lib/cli/parser-helpers.js +0 -82
  142. package/build/lib/driver-config.js +0 -77
  143. package/build/lib/drivers.js +0 -96
  144. package/build/lib/extension-config.js +0 -253
  145. package/build/lib/plugin-config.js +0 -59
  146. package/build/lib/plugins.js +0 -14
  147. package/lib/cli/npm.js +0 -183
  148. package/lib/cli/parser-helpers.js +0 -79
  149. package/lib/driver-config.js +0 -46
  150. package/lib/drivers.js +0 -81
  151. package/lib/extension-config.js +0 -209
  152. package/lib/plugin-config.js +0 -34
  153. 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,204 @@
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 Driver = import('@appium/types').Driver;
14
+ export type DriverClass = import('@appium/types').DriverClass;
15
+ export type W3CCapabilities = import('@appium/types').W3CCapabilities;
16
+ export type DriverData = import('@appium/types').DriverData;
17
+ export type DriverOpts = import('@appium/types').ServerArgs;
18
+ export type Constraints = import('@appium/types').Constraints;
19
+ export type AppiumServer = import('@appium/types').AppiumServer;
20
+ export type ExtensionType = import('@appium/types').ExtensionType;
21
+ export type DriverConfig = import('./extension/driver-config').DriverConfig;
22
+ export type Plugin = import('@appium/types').Plugin;
23
+ export type PluginClass = import('@appium/types').PluginClass;
24
+ export type PluginType = import('@appium/types').PluginType;
25
+ export type DriverType = import('@appium/types').DriverType;
26
+ export type SessionHandler = import('@appium/types').SessionHandler<SessionHandlerResult<any[]>, SessionHandlerResult<void>>;
27
+ /**
28
+ * Used by {@linkcode AppiumDriver.createSession } and {@linkcode AppiumDriver.deleteSession } to describe
29
+ * result.
30
+ */
31
+ export type SessionHandlerResult<V> = {
32
+ value?: V | undefined;
33
+ error?: Error | undefined;
34
+ protocol?: string | undefined;
35
+ };
36
+ /**
37
+ * @implements {SessionHandler}
38
+ */
39
+ export class AppiumDriver extends DriverCore implements SessionHandler {
40
+ /**
41
+ * @param {DriverOpts} opts
42
+ */
43
+ constructor(opts: DriverOpts);
44
+ /**
45
+ * Access to sessions list must be guarded with a Semaphore, because
46
+ * it might be changed by other async calls at any time
47
+ * It is not recommended to access this property directly from the outside
48
+ * @type {Record<string,ExternalDriver>}
49
+ */
50
+ sessions: Record<string, ExternalDriver>;
51
+ /**
52
+ * Access to pending drivers list must be guarded with a Semaphore, because
53
+ * it might be changed by other async calls at any time
54
+ * It is not recommended to access this property directly from the outside
55
+ * @type {Record<string,ExternalDriver[]>}
56
+ */
57
+ pendingDrivers: Record<string, ExternalDriver[]>;
58
+ /**
59
+ * List of active plugins
60
+ * @type {Map<PluginClass,string>}
61
+ */
62
+ pluginClasses: Map<PluginClass, string>;
63
+ /**
64
+ * map of sessions to actual plugin instances per session
65
+ * @type {Record<string,InstanceType<PluginClass>[]>}
66
+ */
67
+ sessionPlugins: Record<string, InstanceType<PluginClass>[]>;
68
+ /**
69
+ * some commands are sessionless, so we need a set of plugins for them
70
+ * @type {InstanceType<PluginClass>[]}
71
+ */
72
+ sessionlessPlugins: InstanceType<PluginClass>[];
73
+ /** @type {DriverConfig} */
74
+ driverConfig: DriverConfig;
75
+ /** @type {AppiumServer} */
76
+ server: AppiumServer;
77
+ desiredCapConstraints: Readonly<import("@appium/types").Constraints>;
78
+ /** @type {DriverOpts} */
79
+ args: DriverOpts;
80
+ sessionExists(sessionId: any): boolean;
81
+ driverForSession(sessionId: any): import("@appium/types").ExternalDriver;
82
+ getStatus(): Promise<{
83
+ build: import("../types").BuildInfo;
84
+ }>;
85
+ getSessions(): Promise<{
86
+ id: string;
87
+ capabilities: Partial<import("@wdio/types/build/Capabilities").Capabilities & import("@wdio/types/build/Capabilities").AppiumCapabilities & {
88
+ [x: string]: any;
89
+ }> | undefined;
90
+ }[]>;
91
+ printNewSessionAnnouncement(driverName: any, driverVersion: any, driverBaseVersion: any): void;
92
+ /**
93
+ * Retrieves all CLI arguments for a specific plugin.
94
+ * @param {string} extName - Plugin name
95
+ * @returns {Record<string,unknown>} Arguments object. If none, an empty object.
96
+ */
97
+ getCliArgsForPlugin(extName: string): Record<string, unknown>;
98
+ /**
99
+ * Retrieves CLI args for a specific driver.
100
+ *
101
+ * _Any arg which is equal to its default value will not be present in the returned object._
102
+ *
103
+ * _Note that this behavior currently (May 18 2022) differs from how plugins are handled_ (see {@linkcode AppiumDriver.getCliArgsForPlugin}).
104
+ * @param {string} extName - Driver name
105
+ * @returns {Record<string,unknown>|undefined} Arguments object. If none, `undefined`
106
+ */
107
+ getCliArgsForDriver(extName: string): Record<string, unknown> | undefined;
108
+ /**
109
+ * Create a new session
110
+ * @param {W3CCapabilities} jsonwpCaps JSONWP formatted desired capabilities
111
+ * @param {W3CCapabilities} reqCaps Required capabilities (JSONWP standard)
112
+ * @param {W3CCapabilities} w3cCapabilities W3C capabilities
113
+ * @param {DriverData[]} [driverData]
114
+ */
115
+ createSession(jsonwpCaps: W3CCapabilities, reqCaps: W3CCapabilities, w3cCapabilities: W3CCapabilities, driverData?: import("@appium/types").DriverData[] | undefined): Promise<{
116
+ protocol: string | undefined;
117
+ error: any;
118
+ value?: undefined;
119
+ } | {
120
+ protocol: string | undefined;
121
+ value: any[];
122
+ error?: undefined;
123
+ }>;
124
+ /**
125
+ *
126
+ * @param {Driver} driver
127
+ * @param {string} innerSessionId
128
+ */
129
+ attachUnexpectedShutdownHandler(driver: Driver, innerSessionId: string): void;
130
+ /**
131
+ *
132
+ * @param {DriverClass} InnerDriver
133
+ * @returns {Promise<DriverData[]>}}
134
+ */
135
+ curSessionDataForDriver(InnerDriver: DriverClass): Promise<DriverData[]>;
136
+ /**
137
+ * @param {string} sessionId
138
+ */
139
+ deleteSession(sessionId: string): Promise<{
140
+ protocol: undefined;
141
+ value: void;
142
+ error?: undefined;
143
+ } | {
144
+ protocol: undefined;
145
+ error: any;
146
+ value?: undefined;
147
+ }>;
148
+ deleteAllSessions(opts?: {}): Promise<void>;
149
+ /**
150
+ * Get the appropriate plugins for a session (or sessionless plugins)
151
+ *
152
+ * @param {?string} sessionId - the sessionId (or null) to use to find plugins
153
+ * @returns {Array} - array of plugin instances
154
+ */
155
+ pluginsForSession(sessionId?: string | null): any[];
156
+ /**
157
+ * To get plugins for a command, we either get the plugin instances associated with the
158
+ * particular command's session, or in the case of sessionless plugins, pull from the set of
159
+ * plugin instances reserved for sessionless commands (and we lazily create plugin instances on
160
+ * first use)
161
+ *
162
+ * @param {string} cmd - the name of the command to find a plugin to handle
163
+ * @param {?string} sessionId - the particular session for which to find a plugin, or null if
164
+ * sessionless
165
+ */
166
+ pluginsToHandleCmd(cmd: string, sessionId?: string | null): any[];
167
+ /**
168
+ * Creates instances of all of the enabled Plugin classes
169
+ * @returns {Plugin[]}
170
+ */
171
+ createPluginInstances(): Plugin[];
172
+ /**
173
+ *
174
+ * @param {string} cmd
175
+ * @param {...any} args
176
+ * @returns {Promise<{value: any, error?: Error, protocol: string} | import('type-fest').AsyncReturnType<Driver['executeCommand']>>}
177
+ */
178
+ executeCommand(cmd: string, ...args: any[]): Promise<any>;
179
+ wrapCommandWithPlugins({ driver, cmd, args, next, cmdHandledBy, plugins }: {
180
+ driver: any;
181
+ cmd: any;
182
+ args: any;
183
+ next: any;
184
+ cmdHandledBy: any;
185
+ plugins: any;
186
+ }): any;
187
+ logPluginHandlerReport(plugins: any, { cmd, cmdHandledBy }: {
188
+ cmd: any;
189
+ cmdHandledBy: any;
190
+ }): void;
191
+ executeWrappedCommand({ wrappedCmd, protocol }: {
192
+ wrappedCmd: any;
193
+ protocol: any;
194
+ }): Promise<{
195
+ value: any;
196
+ error: any;
197
+ protocol: any;
198
+ }>;
199
+ proxyActive(sessionId: any): boolean;
200
+ getProxyAvoidList(sessionId: any): [string, RegExp][];
201
+ canProxy(sessionId: any): boolean;
202
+ }
203
+ import { DriverCore } from "@appium/base-driver";
204
+ //# sourceMappingURL=appium.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appium.d.ts","sourceRoot":"","sources":["../../lib/appium.js"],"names":[],"mappings":"AAkyBA;;;GAGG;AACH;IAME,cAOC;IAZD;;OAEG;IACH,MAFU,SAAS,MAAM,CAAC,CAEgB;CAU3C;6BAKY,OAAO,eAAe,EAAE,cAAc;qBACtC,OAAO,eAAe,EAAE,MAAM;0BAC9B,OAAO,eAAe,EAAE,WAAW;8BACnC,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,eAAe,EAAE,aAAa;2BACrC,OAAO,2BAA2B,EAAE,YAAY;qBAChD,OAAO,eAAe,EAAE,MAAM;0BAC9B,OAAO,eAAe,EAAE,WAAW;yBACnC,OAAO,eAAe,EAAE,UAAU;yBAClC,OAAO,eAAe,EAAE,UAAU;6BAClC,OAAO,eAAe,EAAE,cAAc,CAAC,qBAAqB,GAAG,EAAE,CAAC,EAAC,qBAAqB,IAAI,CAAC,CAAC;;;;;;;;;;AAnyB3G;;GAEG;AACH;IAqDE;;OAEG;IACH,kBAFW,UAAU,EAwBpB;IA7ED;;;;;OAKG;IACH,UAFU,OAAO,MAAM,EAAC,cAAc,CAAC,CAEzB;IAEd;;;;;OAKG;IACH,gBAFU,OAAO,MAAM,EAAC,cAAc,EAAE,CAAC,CAErB;IASpB;;;OAGG;IACH,eAFU,IAAI,WAAW,EAAC,MAAM,CAAC,CAEnB;IAEd;;;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;IAEP,qEAAqD;IAErD,yBAAyB;IACzB,MADW,UAAU,CAChB;IA+CL,uCAGC;IAED,yEAEC;IAGD;;OAIC;IAGD;;;;;SAKC;IAED,+FAiBC;IAED;;;;OAIG;IACH,6BAHW,MAAM,GACJ,OAAO,MAAM,EAAC,OAAO,CAAC,CAIlC;IAED;;;;;;;;OAQG;IACH,6BAHW,MAAM,GACJ,OAAO,MAAM,EAAC,OAAO,CAAC,GAAC,SAAS,CAgB5C;IAED;;;;;;OAMG;IACH,0BALW,eAAe,WACf,eAAe,mBACf,eAAe;;;;;;;;OAuKzB;IAED;;;;OAIG;IACH,wCAHW,MAAM,kBACN,MAAM,QAsChB;IAED;;;;OAIG;IAEH,qCAJW,WAAW,GACT,QAAQ,UAAU,EAAE,CAAC,CAkBjC;IAED;;OAEG;IACH,yBAFW,MAAM;;;;;;;;OA0ChB;IAED,4CAqBC;IAED;;;;;OAKG;IACH,8BAHY,MAAM,gBAejB;IAED;;;;;;;;;OASG;IACH,wBAJW,MAAM,cACL,MAAM,gBASjB;IAED;;;OAGG;IACH,yBAFa,MAAM,EAAE,CAWpB;IAED;;;;;OAKG;IACH,oBAJW,MAAM,WACF,GAAG,kBA+HjB;IAED;;;;;;;YAwBC;IAED;;;aAoBC;IAED;;;;;;;OAwBC;IAED,qCAGC;IAED,sDAGC;IAED,kCAGC;CACF"}