obsidian-integration-testing 12.1.0 → 12.1.1
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.
- package/dist/lib/cjs/adb.cjs +61 -0
- package/dist/lib/cjs/adb.d.cts +61 -0
- package/dist/lib/cjs/device-screenshot.cjs +42 -0
- package/dist/lib/cjs/device-screenshot.d.cts +36 -0
- package/dist/lib/cjs/device-setting-restore.cjs +45 -0
- package/dist/lib/cjs/device-setting-restore.d.cts +60 -0
- package/dist/lib/cjs/device-settings-command.cjs +49 -0
- package/dist/lib/cjs/device-settings-command.d.cts +76 -0
- package/dist/lib/cjs/device-settings.cjs +88 -0
- package/dist/lib/cjs/device-settings.d.cts +94 -0
- package/dist/lib/cjs/emulator-device-id.cjs +32 -0
- package/dist/lib/cjs/emulator-device-id.d.cts +49 -0
- package/dist/lib/cjs/index.cjs +56 -3
- package/dist/lib/cjs/index.d.cts +18 -0
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/resolve-emulator-device-id.cjs +54 -0
- package/dist/lib/cjs/resolve-emulator-device-id.d.cts +28 -0
- package/dist/lib/cjs/soft-keyboard-geometry.cjs +75 -0
- package/dist/lib/cjs/soft-keyboard-geometry.d.cts +156 -0
- package/dist/lib/cjs/soft-keyboard.cjs +118 -0
- package/dist/lib/cjs/soft-keyboard.d.cts +82 -0
- package/dist/lib/esm/adb.d.mts +61 -0
- package/dist/lib/esm/adb.mjs +35 -0
- package/dist/lib/esm/device-screenshot.d.mts +36 -0
- package/dist/lib/esm/device-screenshot.mjs +18 -0
- package/dist/lib/esm/device-setting-restore.d.mts +60 -0
- package/dist/lib/esm/device-setting-restore.mjs +20 -0
- package/dist/lib/esm/device-settings-command.d.mts +76 -0
- package/dist/lib/esm/device-settings-command.mjs +23 -0
- package/dist/lib/esm/device-settings.d.mts +94 -0
- package/dist/lib/esm/device-settings.mjs +67 -0
- package/dist/lib/esm/emulator-device-id.d.mts +49 -0
- package/dist/lib/esm/emulator-device-id.mjs +8 -0
- package/dist/lib/esm/index.d.mts +18 -0
- package/dist/lib/esm/index.mjs +58 -2
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/resolve-emulator-device-id.d.mts +28 -0
- package/dist/lib/esm/resolve-emulator-device-id.mjs +33 -0
- package/dist/lib/esm/soft-keyboard-geometry.d.mts +156 -0
- package/dist/lib/esm/soft-keyboard-geometry.mjs +47 -0
- package/dist/lib/esm/soft-keyboard.d.mts +82 -0
- package/dist/lib/esm/soft-keyboard.mjs +91 -0
- package/package.json +4 -3
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Builds the `adb shell settings …` argument list.
|
|
5
|
+
*
|
|
6
|
+
* Split out of {@link ./device-settings.ts} for the same reason
|
|
7
|
+
* {@link ./adb-device-list.ts} is split out of the transport factory: the
|
|
8
|
+
* argument list is pure and worth unit-testing, while the call that runs it is
|
|
9
|
+
* integration-time code that a unit test cannot reach. Keeping them in one file
|
|
10
|
+
* would put the namespace default inside a coverage-ignored block, where nothing
|
|
11
|
+
* checks that it is what the documentation claims.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* The `settings` namespaces this helper addresses.
|
|
15
|
+
*/
|
|
16
|
+
export declare enum DeviceSettingNamespace {
|
|
17
|
+
/**
|
|
18
|
+
* Device-wide settings, e.g. `hide_error_dialogs`.
|
|
19
|
+
*/
|
|
20
|
+
Global = "global",
|
|
21
|
+
/**
|
|
22
|
+
* Per-user settings the system reads, e.g. `show_ime_with_hard_keyboard`.
|
|
23
|
+
*/
|
|
24
|
+
Secure = "secure",
|
|
25
|
+
/**
|
|
26
|
+
* Per-user settings apps may read, e.g. `screen_brightness`.
|
|
27
|
+
*/
|
|
28
|
+
System = "system"
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The `settings` sub-commands this helper issues.
|
|
32
|
+
*/
|
|
33
|
+
export declare enum DeviceSettingVerb {
|
|
34
|
+
/**
|
|
35
|
+
* Removes the setting, returning it to never-having-been-written.
|
|
36
|
+
*/
|
|
37
|
+
Delete = "delete",
|
|
38
|
+
/**
|
|
39
|
+
* Reads the setting, printing `null` when it has never been written.
|
|
40
|
+
*/
|
|
41
|
+
Get = "get",
|
|
42
|
+
/**
|
|
43
|
+
* Writes the setting.
|
|
44
|
+
*/
|
|
45
|
+
Put = "put"
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Parameters for {@link buildDeviceSettingsCommandArguments}.
|
|
49
|
+
*/
|
|
50
|
+
export interface BuildDeviceSettingsCommandArgumentsParams {
|
|
51
|
+
/**
|
|
52
|
+
* The setting's name within {@link namespace}, e.g. `show_ime_with_hard_keyboard`.
|
|
53
|
+
*/
|
|
54
|
+
readonly name: string;
|
|
55
|
+
/**
|
|
56
|
+
* The settings namespace the name lives in.
|
|
57
|
+
*
|
|
58
|
+
* @default {@link DeviceSettingNamespace.Secure}
|
|
59
|
+
*/
|
|
60
|
+
readonly namespace?: DeviceSettingNamespace;
|
|
61
|
+
/**
|
|
62
|
+
* The value to write. Meaningful only for {@link DeviceSettingVerb.Put}.
|
|
63
|
+
*/
|
|
64
|
+
readonly value?: string;
|
|
65
|
+
/**
|
|
66
|
+
* The sub-command to issue.
|
|
67
|
+
*/
|
|
68
|
+
readonly verb: DeviceSettingVerb;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Builds the arguments for `adb shell settings <verb> <namespace> <name> [value]`.
|
|
72
|
+
*
|
|
73
|
+
* @param params - The sub-command, the setting, its namespace and — for a write — its value.
|
|
74
|
+
* @returns The arguments to hand to `runAdbText`, `shell` included.
|
|
75
|
+
*/
|
|
76
|
+
export declare function buildDeviceSettingsCommandArguments(params: BuildDeviceSettingsCommandArgumentsParams): string[];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var DeviceSettingNamespace = /* @__PURE__ */ ((DeviceSettingNamespace2) => {
|
|
2
|
+
DeviceSettingNamespace2["Global"] = "global";
|
|
3
|
+
DeviceSettingNamespace2["Secure"] = "secure";
|
|
4
|
+
DeviceSettingNamespace2["System"] = "system";
|
|
5
|
+
return DeviceSettingNamespace2;
|
|
6
|
+
})(DeviceSettingNamespace || {});
|
|
7
|
+
var DeviceSettingVerb = /* @__PURE__ */ ((DeviceSettingVerb2) => {
|
|
8
|
+
DeviceSettingVerb2["Delete"] = "delete";
|
|
9
|
+
DeviceSettingVerb2["Get"] = "get";
|
|
10
|
+
DeviceSettingVerb2["Put"] = "put";
|
|
11
|
+
return DeviceSettingVerb2;
|
|
12
|
+
})(DeviceSettingVerb || {});
|
|
13
|
+
function buildDeviceSettingsCommandArguments(params) {
|
|
14
|
+
const namespace = params.namespace ?? "secure" /* Secure */;
|
|
15
|
+
const value = params.verb === "put" /* Put */ && params.value !== void 0 ? [params.value] : [];
|
|
16
|
+
return ["shell", "settings", params.verb, namespace, params.name, ...value];
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
DeviceSettingNamespace,
|
|
20
|
+
DeviceSettingVerb,
|
|
21
|
+
buildDeviceSettingsCommandArguments
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RldmljZS1zZXR0aW5ncy1jb21tYW5kLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQnVpbGRzIHRoZSBgYWRiIHNoZWxsIHNldHRpbmdzIFx1MjAyNmAgYXJndW1lbnQgbGlzdC5cbiAqXG4gKiBTcGxpdCBvdXQgb2Yge0BsaW5rIC4vZGV2aWNlLXNldHRpbmdzLnRzfSBmb3IgdGhlIHNhbWUgcmVhc29uXG4gKiB7QGxpbmsgLi9hZGItZGV2aWNlLWxpc3QudHN9IGlzIHNwbGl0IG91dCBvZiB0aGUgdHJhbnNwb3J0IGZhY3Rvcnk6IHRoZVxuICogYXJndW1lbnQgbGlzdCBpcyBwdXJlIGFuZCB3b3J0aCB1bml0LXRlc3RpbmcsIHdoaWxlIHRoZSBjYWxsIHRoYXQgcnVucyBpdCBpc1xuICogaW50ZWdyYXRpb24tdGltZSBjb2RlIHRoYXQgYSB1bml0IHRlc3QgY2Fubm90IHJlYWNoLiBLZWVwaW5nIHRoZW0gaW4gb25lIGZpbGVcbiAqIHdvdWxkIHB1dCB0aGUgbmFtZXNwYWNlIGRlZmF1bHQgaW5zaWRlIGEgY292ZXJhZ2UtaWdub3JlZCBibG9jaywgd2hlcmUgbm90aGluZ1xuICogY2hlY2tzIHRoYXQgaXQgaXMgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBjbGFpbXMuXG4gKi9cblxuLyoqXG4gKiBUaGUgYHNldHRpbmdzYCBuYW1lc3BhY2VzIHRoaXMgaGVscGVyIGFkZHJlc3Nlcy5cbiAqL1xuZXhwb3J0IGVudW0gRGV2aWNlU2V0dGluZ05hbWVzcGFjZSB7XG4gIC8qKlxuICAgKiBEZXZpY2Utd2lkZSBzZXR0aW5ncywgZS5nLiBgaGlkZV9lcnJvcl9kaWFsb2dzYC5cbiAgICovXG4gIEdsb2JhbCA9ICdnbG9iYWwnLFxuXG4gIC8qKlxuICAgKiBQZXItdXNlciBzZXR0aW5ncyB0aGUgc3lzdGVtIHJlYWRzLCBlLmcuIGBzaG93X2ltZV93aXRoX2hhcmRfa2V5Ym9hcmRgLlxuICAgKi9cbiAgU2VjdXJlID0gJ3NlY3VyZScsXG5cbiAgLyoqXG4gICAqIFBlci11c2VyIHNldHRpbmdzIGFwcHMgbWF5IHJlYWQsIGUuZy4gYHNjcmVlbl9icmlnaHRuZXNzYC5cbiAgICovXG4gIFN5c3RlbSA9ICdzeXN0ZW0nXG59XG5cbi8qKlxuICogVGhlIGBzZXR0aW5nc2Agc3ViLWNvbW1hbmRzIHRoaXMgaGVscGVyIGlzc3Vlcy5cbiAqL1xuZXhwb3J0IGVudW0gRGV2aWNlU2V0dGluZ1ZlcmIge1xuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgc2V0dGluZywgcmV0dXJuaW5nIGl0IHRvIG5ldmVyLWhhdmluZy1iZWVuLXdyaXR0ZW4uXG4gICAqL1xuICBEZWxldGUgPSAnZGVsZXRlJyxcblxuICAvKipcbiAgICogUmVhZHMgdGhlIHNldHRpbmcsIHByaW50aW5nIGBudWxsYCB3aGVuIGl0IGhhcyBuZXZlciBiZWVuIHdyaXR0ZW4uXG4gICAqL1xuICBHZXQgPSAnZ2V0JyxcblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBzZXR0aW5nLlxuICAgKi9cbiAgUHV0ID0gJ3B1dCdcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGREZXZpY2VTZXR0aW5nc0NvbW1hbmRBcmd1bWVudHN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5nJ3MgbmFtZSB3aXRoaW4ge0BsaW5rIG5hbWVzcGFjZX0sIGUuZy4gYHNob3dfaW1lX3dpdGhfaGFyZF9rZXlib2FyZGAuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBuYW1lc3BhY2UgdGhlIG5hbWUgbGl2ZXMgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBEZXZpY2VTZXR0aW5nTmFtZXNwYWNlLlNlY3VyZX1cbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IERldmljZVNldHRpbmdOYW1lc3BhY2U7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0byB3cml0ZS4gTWVhbmluZ2Z1bCBvbmx5IGZvciB7QGxpbmsgRGV2aWNlU2V0dGluZ1ZlcmIuUHV0fS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3ViLWNvbW1hbmQgdG8gaXNzdWUuXG4gICAqL1xuICByZWFkb25seSB2ZXJiOiBEZXZpY2VTZXR0aW5nVmVyYjtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGFyZ3VtZW50cyBmb3IgYGFkYiBzaGVsbCBzZXR0aW5ncyA8dmVyYj4gPG5hbWVzcGFjZT4gPG5hbWU+IFt2YWx1ZV1gLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc3ViLWNvbW1hbmQsIHRoZSBzZXR0aW5nLCBpdHMgbmFtZXNwYWNlIGFuZCBcdTIwMTQgZm9yIGEgd3JpdGUgXHUyMDE0IGl0cyB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSBhcmd1bWVudHMgdG8gaGFuZCB0byBgcnVuQWRiVGV4dGAsIGBzaGVsbGAgaW5jbHVkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZERldmljZVNldHRpbmdzQ29tbWFuZEFyZ3VtZW50cyhwYXJhbXM6IEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zKTogc3RyaW5nW10ge1xuICBjb25zdCBuYW1lc3BhY2UgPSBwYXJhbXMubmFtZXNwYWNlID8/IERldmljZVNldHRpbmdOYW1lc3BhY2UuU2VjdXJlO1xuICBjb25zdCB2YWx1ZSA9IHBhcmFtcy52ZXJiID09PSBEZXZpY2VTZXR0aW5nVmVyYi5QdXQgJiYgcGFyYW1zLnZhbHVlICE9PSB1bmRlZmluZWQgPyBbcGFyYW1zLnZhbHVlXSA6IFtdO1xuXG4gIHJldHVybiBbJ3NoZWxsJywgJ3NldHRpbmdzJywgcGFyYW1zLnZlcmIsIG5hbWVzcGFjZSwgcGFyYW1zLm5hbWUsIC4uLnZhbHVlXTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQWdCTyxJQUFLLHlCQUFMLGtCQUFLQSw0QkFBTDtBQUlMLEVBQUFBLHdCQUFBLFlBQVM7QUFLVCxFQUFBQSx3QkFBQSxZQUFTO0FBS1QsRUFBQUEsd0JBQUEsWUFBUztBQWRDLFNBQUFBO0FBQUEsR0FBQTtBQW9CTCxJQUFLLG9CQUFMLGtCQUFLQyx1QkFBTDtBQUlMLEVBQUFBLG1CQUFBLFlBQVM7QUFLVCxFQUFBQSxtQkFBQSxTQUFNO0FBS04sRUFBQUEsbUJBQUEsU0FBTTtBQWRJLFNBQUFBO0FBQUEsR0FBQTtBQWtETCxTQUFTLG9DQUFvQyxRQUE2RDtBQUMvRyxRQUFNLFlBQVksT0FBTyxhQUFhO0FBQ3RDLFFBQU0sUUFBUSxPQUFPLFNBQVMsbUJBQXlCLE9BQU8sVUFBVSxTQUFZLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztBQUV0RyxTQUFPLENBQUMsU0FBUyxZQUFZLE9BQU8sTUFBTSxXQUFXLE9BQU8sTUFBTSxHQUFHLEtBQUs7QUFDNUU7IiwKICAibmFtZXMiOiBbIkRldmljZVNldHRpbmdOYW1lc3BhY2UiLCAiRGV2aWNlU2V0dGluZ1ZlcmIiXQp9Cg==
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Reads and writes Android device settings — and wraps the one setting a
|
|
5
|
+
* screenshot suite has to change.
|
|
6
|
+
*
|
|
7
|
+
* The screenshot AVDs are built `hw.keyboard=yes`, so Android suppresses the
|
|
8
|
+
* on-screen keyboard even where the page asks for one. `show_ime_with_hard_keyboard`
|
|
9
|
+
* is what turns it back on. {@link withSoftKeyboardEnabled} flips it, runs the
|
|
10
|
+
* work, and puts the device back exactly as it found it — including restoring a
|
|
11
|
+
* setting that had never been written, which takes a delete rather than a write
|
|
12
|
+
* (see `device-setting-restore`).
|
|
13
|
+
*
|
|
14
|
+
* Every function here shells out, so the whole module is integration-time code;
|
|
15
|
+
* the restore decision and the argument list it depends on are unit-tested in
|
|
16
|
+
* their own modules.
|
|
17
|
+
*/
|
|
18
|
+
import type { DeviceSettingNamespace } from './device-settings-command.mjs';
|
|
19
|
+
/**
|
|
20
|
+
* Parameters for {@link deleteDeviceSetting} and {@link readDeviceSetting}.
|
|
21
|
+
*/
|
|
22
|
+
export interface DeviceSettingParams {
|
|
23
|
+
/**
|
|
24
|
+
* The device to address.
|
|
25
|
+
*/
|
|
26
|
+
readonly deviceId: string;
|
|
27
|
+
/**
|
|
28
|
+
* The setting's name within {@link namespace}, e.g. `show_ime_with_hard_keyboard`.
|
|
29
|
+
*/
|
|
30
|
+
readonly name: string;
|
|
31
|
+
/**
|
|
32
|
+
* The settings namespace the name lives in.
|
|
33
|
+
*
|
|
34
|
+
* @default {@link DeviceSettingNamespace.Secure}
|
|
35
|
+
*/
|
|
36
|
+
readonly namespace?: DeviceSettingNamespace;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Parameters for {@link withSoftKeyboardEnabled}.
|
|
40
|
+
*
|
|
41
|
+
* @typeParam T - What the wrapped work returns.
|
|
42
|
+
*/
|
|
43
|
+
export interface WithSoftKeyboardEnabledParams<T> {
|
|
44
|
+
/**
|
|
45
|
+
* The work to run while the on-screen keyboard is permitted.
|
|
46
|
+
*/
|
|
47
|
+
readonly callback: (this: void) => Promise<T>;
|
|
48
|
+
/**
|
|
49
|
+
* The device to address.
|
|
50
|
+
*/
|
|
51
|
+
readonly deviceId: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Parameters for {@link writeDeviceSetting}.
|
|
55
|
+
*/
|
|
56
|
+
export interface WriteDeviceSettingParams extends DeviceSettingParams {
|
|
57
|
+
/**
|
|
58
|
+
* The value to write.
|
|
59
|
+
*/
|
|
60
|
+
readonly value: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Clears a device setting, returning it to never-having-been-written.
|
|
64
|
+
*
|
|
65
|
+
* @param params - The device, the setting and its namespace.
|
|
66
|
+
* @returns A {@link Promise} that resolves once the setting is gone.
|
|
67
|
+
*/
|
|
68
|
+
export declare function deleteDeviceSetting(params: DeviceSettingParams): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Reads a device setting.
|
|
71
|
+
*
|
|
72
|
+
* @param params - The device, the setting and its namespace.
|
|
73
|
+
* @returns A {@link Promise} that resolves to the setting's value, or the literal `null` when it has never
|
|
74
|
+
* been written.
|
|
75
|
+
*/
|
|
76
|
+
export declare function readDeviceSetting(params: DeviceSettingParams): Promise<string>;
|
|
77
|
+
/**
|
|
78
|
+
* Permits the on-screen keyboard for the duration of a callback, then restores the device exactly.
|
|
79
|
+
*
|
|
80
|
+
* The restore runs whether the callback succeeded or threw — a suite that dies mid-capture must not leave
|
|
81
|
+
* the device configured differently than it found it.
|
|
82
|
+
*
|
|
83
|
+
* @typeParam T - What the wrapped work returns.
|
|
84
|
+
* @param params - The device and the work to run.
|
|
85
|
+
* @returns A {@link Promise} that resolves to whatever the callback returned.
|
|
86
|
+
*/
|
|
87
|
+
export declare function withSoftKeyboardEnabled<T>(params: WithSoftKeyboardEnabledParams<T>): Promise<T>;
|
|
88
|
+
/**
|
|
89
|
+
* Writes a device setting.
|
|
90
|
+
*
|
|
91
|
+
* @param params - The device, the setting, its namespace and the value to write.
|
|
92
|
+
* @returns A {@link Promise} that resolves once the setting is written.
|
|
93
|
+
*/
|
|
94
|
+
export declare function writeDeviceSetting(params: WriteDeviceSettingParams): Promise<void>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { runAdbText } from "./adb.mjs";
|
|
2
|
+
import {
|
|
3
|
+
DeviceSettingRestoreKind,
|
|
4
|
+
resolveDeviceSettingRestore
|
|
5
|
+
} from "./device-setting-restore.mjs";
|
|
6
|
+
import {
|
|
7
|
+
buildDeviceSettingsCommandArguments,
|
|
8
|
+
DeviceSettingVerb
|
|
9
|
+
} from "./device-settings-command.mjs";
|
|
10
|
+
const SOFT_KEYBOARD_SETTING_NAME = "show_ime_with_hard_keyboard";
|
|
11
|
+
const SOFT_KEYBOARD_SETTING_ON = "1";
|
|
12
|
+
async function deleteDeviceSetting(params) {
|
|
13
|
+
await runAdbText({
|
|
14
|
+
commandArguments: buildDeviceSettingsCommandArguments({
|
|
15
|
+
name: params.name,
|
|
16
|
+
...params.namespace !== void 0 && { namespace: params.namespace },
|
|
17
|
+
verb: DeviceSettingVerb.Delete
|
|
18
|
+
}),
|
|
19
|
+
deviceId: params.deviceId
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async function readDeviceSetting(params) {
|
|
23
|
+
return await runAdbText({
|
|
24
|
+
commandArguments: buildDeviceSettingsCommandArguments({
|
|
25
|
+
name: params.name,
|
|
26
|
+
...params.namespace !== void 0 && { namespace: params.namespace },
|
|
27
|
+
verb: DeviceSettingVerb.Get
|
|
28
|
+
}),
|
|
29
|
+
deviceId: params.deviceId
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async function withSoftKeyboardEnabled(params) {
|
|
33
|
+
const settingParams = {
|
|
34
|
+
deviceId: params.deviceId,
|
|
35
|
+
name: SOFT_KEYBOARD_SETTING_NAME
|
|
36
|
+
};
|
|
37
|
+
const previousValue = await readDeviceSetting(settingParams);
|
|
38
|
+
await writeDeviceSetting({ ...settingParams, value: SOFT_KEYBOARD_SETTING_ON });
|
|
39
|
+
try {
|
|
40
|
+
return await params.callback();
|
|
41
|
+
} finally {
|
|
42
|
+
const restore = resolveDeviceSettingRestore(previousValue);
|
|
43
|
+
if (restore.kind === DeviceSettingRestoreKind.Delete) {
|
|
44
|
+
await deleteDeviceSetting(settingParams);
|
|
45
|
+
} else {
|
|
46
|
+
await writeDeviceSetting({ ...settingParams, value: restore.value });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function writeDeviceSetting(params) {
|
|
51
|
+
await runAdbText({
|
|
52
|
+
commandArguments: buildDeviceSettingsCommandArguments({
|
|
53
|
+
name: params.name,
|
|
54
|
+
...params.namespace !== void 0 && { namespace: params.namespace },
|
|
55
|
+
value: params.value,
|
|
56
|
+
verb: DeviceSettingVerb.Put
|
|
57
|
+
}),
|
|
58
|
+
deviceId: params.deviceId
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
export {
|
|
62
|
+
deleteDeviceSetting,
|
|
63
|
+
readDeviceSetting,
|
|
64
|
+
withSoftKeyboardEnabled,
|
|
65
|
+
writeDeviceSetting
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RldmljZS1zZXR0aW5ncy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlYWRzIGFuZCB3cml0ZXMgQW5kcm9pZCBkZXZpY2Ugc2V0dGluZ3MgXHUyMDE0IGFuZCB3cmFwcyB0aGUgb25lIHNldHRpbmcgYVxuICogc2NyZWVuc2hvdCBzdWl0ZSBoYXMgdG8gY2hhbmdlLlxuICpcbiAqIFRoZSBzY3JlZW5zaG90IEFWRHMgYXJlIGJ1aWx0IGBody5rZXlib2FyZD15ZXNgLCBzbyBBbmRyb2lkIHN1cHByZXNzZXMgdGhlXG4gKiBvbi1zY3JlZW4ga2V5Ym9hcmQgZXZlbiB3aGVyZSB0aGUgcGFnZSBhc2tzIGZvciBvbmUuIGBzaG93X2ltZV93aXRoX2hhcmRfa2V5Ym9hcmRgXG4gKiBpcyB3aGF0IHR1cm5zIGl0IGJhY2sgb24uIHtAbGluayB3aXRoU29mdEtleWJvYXJkRW5hYmxlZH0gZmxpcHMgaXQsIHJ1bnMgdGhlXG4gKiB3b3JrLCBhbmQgcHV0cyB0aGUgZGV2aWNlIGJhY2sgZXhhY3RseSBhcyBpdCBmb3VuZCBpdCBcdTIwMTQgaW5jbHVkaW5nIHJlc3RvcmluZyBhXG4gKiBzZXR0aW5nIHRoYXQgaGFkIG5ldmVyIGJlZW4gd3JpdHRlbiwgd2hpY2ggdGFrZXMgYSBkZWxldGUgcmF0aGVyIHRoYW4gYSB3cml0ZVxuICogKHNlZSBgZGV2aWNlLXNldHRpbmctcmVzdG9yZWApLlxuICpcbiAqIEV2ZXJ5IGZ1bmN0aW9uIGhlcmUgc2hlbGxzIG91dCwgc28gdGhlIHdob2xlIG1vZHVsZSBpcyBpbnRlZ3JhdGlvbi10aW1lIGNvZGU7XG4gKiB0aGUgcmVzdG9yZSBkZWNpc2lvbiBhbmQgdGhlIGFyZ3VtZW50IGxpc3QgaXQgZGVwZW5kcyBvbiBhcmUgdW5pdC10ZXN0ZWQgaW5cbiAqIHRoZWlyIG93biBtb2R1bGVzLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIGNvZGUgKHNoZWxscyBvdXQgdG8gYSByZWFsIGRldmljZSkgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgRGV2aWNlU2V0dGluZ05hbWVzcGFjZSB9IGZyb20gJy4vZGV2aWNlLXNldHRpbmdzLWNvbW1hbmQubWpzJztcblxuaW1wb3J0IHsgcnVuQWRiVGV4dCB9IGZyb20gJy4vYWRiLm1qcyc7XG5pbXBvcnQge1xuICBEZXZpY2VTZXR0aW5nUmVzdG9yZUtpbmQsXG4gIHJlc29sdmVEZXZpY2VTZXR0aW5nUmVzdG9yZVxufSBmcm9tICcuL2RldmljZS1zZXR0aW5nLXJlc3RvcmUubWpzJztcbmltcG9ydCB7XG4gIGJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzLFxuICBEZXZpY2VTZXR0aW5nVmVyYlxufSBmcm9tICcuL2RldmljZS1zZXR0aW5ncy1jb21tYW5kLm1qcyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGRlbGV0ZURldmljZVNldHRpbmd9IGFuZCB7QGxpbmsgcmVhZERldmljZVNldHRpbmd9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZVNldHRpbmdQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGRldmljZSB0byBhZGRyZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldHRpbmcncyBuYW1lIHdpdGhpbiB7QGxpbmsgbmFtZXNwYWNlfSwgZS5nLiBgc2hvd19pbWVfd2l0aF9oYXJkX2tleWJvYXJkYC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIG5hbWVzcGFjZSB0aGUgbmFtZSBsaXZlcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIERldmljZVNldHRpbmdOYW1lc3BhY2UuU2VjdXJlfVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlPzogRGV2aWNlU2V0dGluZ05hbWVzcGFjZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd2l0aFNvZnRLZXlib2FyZEVuYWJsZWR9LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFdoYXQgdGhlIHdyYXBwZWQgd29yayByZXR1cm5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkUGFyYW1zPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSB3b3JrIHRvIHJ1biB3aGlsZSB0aGUgb24tc2NyZWVuIGtleWJvYXJkIGlzIHBlcm1pdHRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNhbGxiYWNrOiAodGhpczogdm9pZCkgPT4gUHJvbWlzZTxUPjtcblxuICAvKipcbiAgICogVGhlIGRldmljZSB0byBhZGRyZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd3JpdGVEZXZpY2VTZXR0aW5nfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZURldmljZVNldHRpbmdQYXJhbXMgZXh0ZW5kcyBEZXZpY2VTZXR0aW5nUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0byB3cml0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHNldHRpbmcgZGVjaWRpbmcgd2hldGhlciBBbmRyb2lkIGRyYXdzIGEga2V5Ym9hcmQgd2hpbGUgYSBoYXJkd2FyZSBvbmUgaXMgYXR0YWNoZWQuXG4gKi9cbmNvbnN0IFNPRlRfS0VZQk9BUkRfU0VUVElOR19OQU1FID0gJ3Nob3dfaW1lX3dpdGhfaGFyZF9rZXlib2FyZCc7XG5cbmNvbnN0IFNPRlRfS0VZQk9BUkRfU0VUVElOR19PTiA9ICcxJztcblxuLyoqXG4gKiBDbGVhcnMgYSBkZXZpY2Ugc2V0dGluZywgcmV0dXJuaW5nIGl0IHRvIG5ldmVyLWhhdmluZy1iZWVuLXdyaXR0ZW4uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBkZXZpY2UsIHRoZSBzZXR0aW5nIGFuZCBpdHMgbmFtZXNwYWNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBzZXR0aW5nIGlzIGdvbmUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVEZXZpY2VTZXR0aW5nKHBhcmFtczogRGV2aWNlU2V0dGluZ1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBydW5BZGJUZXh0KHtcbiAgICBjb21tYW5kQXJndW1lbnRzOiBidWlsZERldmljZVNldHRpbmdzQ29tbWFuZEFyZ3VtZW50cyh7XG4gICAgICBuYW1lOiBwYXJhbXMubmFtZSxcbiAgICAgIC4uLihwYXJhbXMubmFtZXNwYWNlICE9PSB1bmRlZmluZWQgJiYgeyBuYW1lc3BhY2U6IHBhcmFtcy5uYW1lc3BhY2UgfSksXG4gICAgICB2ZXJiOiBEZXZpY2VTZXR0aW5nVmVyYi5EZWxldGVcbiAgICB9KSxcbiAgICBkZXZpY2VJZDogcGFyYW1zLmRldmljZUlkXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlYWRzIGEgZGV2aWNlIHNldHRpbmcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBkZXZpY2UsIHRoZSBzZXR0aW5nIGFuZCBpdHMgbmFtZXNwYWNlLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgc2V0dGluZydzIHZhbHVlLCBvciB0aGUgbGl0ZXJhbCBgbnVsbGAgd2hlbiBpdCBoYXMgbmV2ZXJcbiAqICAgYmVlbiB3cml0dGVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZERldmljZVNldHRpbmcocGFyYW1zOiBEZXZpY2VTZXR0aW5nUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGF3YWl0IHJ1bkFkYlRleHQoe1xuICAgIGNvbW1hbmRBcmd1bWVudHM6IGJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzKHtcbiAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgLi4uKHBhcmFtcy5uYW1lc3BhY2UgIT09IHVuZGVmaW5lZCAmJiB7IG5hbWVzcGFjZTogcGFyYW1zLm5hbWVzcGFjZSB9KSxcbiAgICAgIHZlcmI6IERldmljZVNldHRpbmdWZXJiLkdldFxuICAgIH0pLFxuICAgIGRldmljZUlkOiBwYXJhbXMuZGV2aWNlSWRcbiAgfSk7XG59XG5cbi8qKlxuICogUGVybWl0cyB0aGUgb24tc2NyZWVuIGtleWJvYXJkIGZvciB0aGUgZHVyYXRpb24gb2YgYSBjYWxsYmFjaywgdGhlbiByZXN0b3JlcyB0aGUgZGV2aWNlIGV4YWN0bHkuXG4gKlxuICogVGhlIHJlc3RvcmUgcnVucyB3aGV0aGVyIHRoZSBjYWxsYmFjayBzdWNjZWVkZWQgb3IgdGhyZXcgXHUyMDE0IGEgc3VpdGUgdGhhdCBkaWVzIG1pZC1jYXB0dXJlIG11c3Qgbm90IGxlYXZlXG4gKiB0aGUgZGV2aWNlIGNvbmZpZ3VyZWQgZGlmZmVyZW50bHkgdGhhbiBpdCBmb3VuZCBpdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBXaGF0IHRoZSB3cmFwcGVkIHdvcmsgcmV0dXJucy5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZGV2aWNlIGFuZCB0aGUgd29yayB0byBydW4uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHdoYXRldmVyIHRoZSBjYWxsYmFjayByZXR1cm5lZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkPFQ+KHBhcmFtczogV2l0aFNvZnRLZXlib2FyZEVuYWJsZWRQYXJhbXM8VD4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3Qgc2V0dGluZ1BhcmFtczogRGV2aWNlU2V0dGluZ1BhcmFtcyA9IHtcbiAgICBkZXZpY2VJZDogcGFyYW1zLmRldmljZUlkLFxuICAgIG5hbWU6IFNPRlRfS0VZQk9BUkRfU0VUVElOR19OQU1FXG4gIH07XG5cbiAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGF3YWl0IHJlYWREZXZpY2VTZXR0aW5nKHNldHRpbmdQYXJhbXMpO1xuICBhd2FpdCB3cml0ZURldmljZVNldHRpbmcoeyAuLi5zZXR0aW5nUGFyYW1zLCB2YWx1ZTogU09GVF9LRVlCT0FSRF9TRVRUSU5HX09OIH0pO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHBhcmFtcy5jYWxsYmFjaygpO1xuICB9IGZpbmFsbHkge1xuICAgIGNvbnN0IHJlc3RvcmUgPSByZXNvbHZlRGV2aWNlU2V0dGluZ1Jlc3RvcmUocHJldmlvdXNWYWx1ZSk7XG4gICAgaWYgKHJlc3RvcmUua2luZCA9PT0gRGV2aWNlU2V0dGluZ1Jlc3RvcmVLaW5kLkRlbGV0ZSkge1xuICAgICAgYXdhaXQgZGVsZXRlRGV2aWNlU2V0dGluZyhzZXR0aW5nUGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgd3JpdGVEZXZpY2VTZXR0aW5nKHsgLi4uc2V0dGluZ1BhcmFtcywgdmFsdWU6IHJlc3RvcmUudmFsdWUgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogV3JpdGVzIGEgZGV2aWNlIHNldHRpbmcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBkZXZpY2UsIHRoZSBzZXR0aW5nLCBpdHMgbmFtZXNwYWNlIGFuZCB0aGUgdmFsdWUgdG8gd3JpdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHNldHRpbmcgaXMgd3JpdHRlbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlRGV2aWNlU2V0dGluZyhwYXJhbXM6IFdyaXRlRGV2aWNlU2V0dGluZ1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBydW5BZGJUZXh0KHtcbiAgICBjb21tYW5kQXJndW1lbnRzOiBidWlsZERldmljZVNldHRpbmdzQ29tbWFuZEFyZ3VtZW50cyh7XG4gICAgICBuYW1lOiBwYXJhbXMubmFtZSxcbiAgICAgIC4uLihwYXJhbXMubmFtZXNwYWNlICE9PSB1bmRlZmluZWQgJiYgeyBuYW1lc3BhY2U6IHBhcmFtcy5uYW1lc3BhY2UgfSksXG4gICAgICB2YWx1ZTogcGFyYW1zLnZhbHVlLFxuICAgICAgdmVyYjogRGV2aWNlU2V0dGluZ1ZlcmIuUHV0XG4gICAgfSksXG4gICAgZGV2aWNlSWQ6IHBhcmFtcy5kZXZpY2VJZFxuICB9KTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICJBQXNCQSxTQUFTLGtCQUFrQjtBQUMzQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBc0RQLE1BQU0sNkJBQTZCO0FBRW5DLE1BQU0sMkJBQTJCO0FBUWpDLGVBQXNCLG9CQUFvQixRQUE0QztBQUNwRixRQUFNLFdBQVc7QUFBQSxJQUNmLGtCQUFrQixvQ0FBb0M7QUFBQSxNQUNwRCxNQUFNLE9BQU87QUFBQSxNQUNiLEdBQUksT0FBTyxjQUFjLFVBQWEsRUFBRSxXQUFXLE9BQU8sVUFBVTtBQUFBLE1BQ3BFLE1BQU0sa0JBQWtCO0FBQUEsSUFDMUIsQ0FBQztBQUFBLElBQ0QsVUFBVSxPQUFPO0FBQUEsRUFDbkIsQ0FBQztBQUNIO0FBU0EsZUFBc0Isa0JBQWtCLFFBQThDO0FBQ3BGLFNBQU8sTUFBTSxXQUFXO0FBQUEsSUFDdEIsa0JBQWtCLG9DQUFvQztBQUFBLE1BQ3BELE1BQU0sT0FBTztBQUFBLE1BQ2IsR0FBSSxPQUFPLGNBQWMsVUFBYSxFQUFFLFdBQVcsT0FBTyxVQUFVO0FBQUEsTUFDcEUsTUFBTSxrQkFBa0I7QUFBQSxJQUMxQixDQUFDO0FBQUEsSUFDRCxVQUFVLE9BQU87QUFBQSxFQUNuQixDQUFDO0FBQ0g7QUFZQSxlQUFzQix3QkFBMkIsUUFBc0Q7QUFDckcsUUFBTSxnQkFBcUM7QUFBQSxJQUN6QyxVQUFVLE9BQU87QUFBQSxJQUNqQixNQUFNO0FBQUEsRUFDUjtBQUVBLFFBQU0sZ0JBQWdCLE1BQU0sa0JBQWtCLGFBQWE7QUFDM0QsUUFBTSxtQkFBbUIsRUFBRSxHQUFHLGVBQWUsT0FBTyx5QkFBeUIsQ0FBQztBQUU5RSxNQUFJO0FBQ0YsV0FBTyxNQUFNLE9BQU8sU0FBUztBQUFBLEVBQy9CLFVBQUU7QUFDQSxVQUFNLFVBQVUsNEJBQTRCLGFBQWE7QUFDekQsUUFBSSxRQUFRLFNBQVMseUJBQXlCLFFBQVE7QUFDcEQsWUFBTSxvQkFBb0IsYUFBYTtBQUFBLElBQ3pDLE9BQU87QUFDTCxZQUFNLG1CQUFtQixFQUFFLEdBQUcsZUFBZSxPQUFPLFFBQVEsTUFBTSxDQUFDO0FBQUEsSUFDckU7QUFBQSxFQUNGO0FBQ0Y7QUFRQSxlQUFzQixtQkFBbUIsUUFBaUQ7QUFDeEYsUUFBTSxXQUFXO0FBQUEsSUFDZixrQkFBa0Isb0NBQW9DO0FBQUEsTUFDcEQsTUFBTSxPQUFPO0FBQUEsTUFDYixHQUFJLE9BQU8sY0FBYyxVQUFhLEVBQUUsV0FBVyxPQUFPLFVBQVU7QUFBQSxNQUNwRSxPQUFPLE9BQU87QUFBQSxNQUNkLE1BQU0sa0JBQWtCO0FBQUEsSUFDMUIsQ0FBQztBQUFBLElBQ0QsVUFBVSxPQUFPO0FBQUEsRUFDbkIsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Picks the running emulator that belongs to a named AVD.
|
|
5
|
+
*
|
|
6
|
+
* A capture suite must never take "the first device `adb devices` lists". Two
|
|
7
|
+
* things routinely make that the wrong device on this fleet: a physical phone is
|
|
8
|
+
* often plugged into the same machine, and the harness's own `obsidian_test` AVD
|
|
9
|
+
* runs at a different geometry than the `obsidian_screenshots` AVD sized to the
|
|
10
|
+
* store's frame. Picking by position silently photographs the wrong screen at
|
|
11
|
+
* the wrong size, and the dimension assertion that would have caught it fires
|
|
12
|
+
* several minutes later, after the run.
|
|
13
|
+
*
|
|
14
|
+
* Pure and unit-tested; the `adb` round-trips that gather the AVD names live in
|
|
15
|
+
* `resolve-emulator-device-id`.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* One running emulator, paired with the AVD it was started from.
|
|
19
|
+
*/
|
|
20
|
+
export interface EmulatorDeviceCandidate {
|
|
21
|
+
/**
|
|
22
|
+
* The AVD name the emulator reports, e.g. `obsidian_screenshots`.
|
|
23
|
+
*/
|
|
24
|
+
readonly avdName: string;
|
|
25
|
+
/**
|
|
26
|
+
* The device UDID, e.g. `emulator-5554`.
|
|
27
|
+
*/
|
|
28
|
+
readonly deviceId: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parameters for {@link selectEmulatorDeviceId}.
|
|
32
|
+
*/
|
|
33
|
+
export interface SelectEmulatorDeviceIdParams {
|
|
34
|
+
/**
|
|
35
|
+
* The AVD name to match.
|
|
36
|
+
*/
|
|
37
|
+
readonly avdName: string;
|
|
38
|
+
/**
|
|
39
|
+
* Every running emulator, with the AVD each was started from.
|
|
40
|
+
*/
|
|
41
|
+
readonly candidates: readonly EmulatorDeviceCandidate[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Picks the emulator started from a named AVD.
|
|
45
|
+
*
|
|
46
|
+
* @param params - The AVD to match and the running emulators to match against.
|
|
47
|
+
* @returns The matching device UDID, or `null` when no running emulator carries that AVD name.
|
|
48
|
+
*/
|
|
49
|
+
export declare function selectEmulatorDeviceId(params: SelectEmulatorDeviceIdParams): null | string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
function selectEmulatorDeviceId(params) {
|
|
2
|
+
const match = params.candidates.find((candidate) => candidate.avdName === params.avdName);
|
|
3
|
+
return match ? match.deviceId : null;
|
|
4
|
+
}
|
|
5
|
+
export {
|
|
6
|
+
selectEmulatorDeviceId
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2VtdWxhdG9yLWRldmljZS1pZC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFBpY2tzIHRoZSBydW5uaW5nIGVtdWxhdG9yIHRoYXQgYmVsb25ncyB0byBhIG5hbWVkIEFWRC5cbiAqXG4gKiBBIGNhcHR1cmUgc3VpdGUgbXVzdCBuZXZlciB0YWtlIFwidGhlIGZpcnN0IGRldmljZSBgYWRiIGRldmljZXNgIGxpc3RzXCIuIFR3b1xuICogdGhpbmdzIHJvdXRpbmVseSBtYWtlIHRoYXQgdGhlIHdyb25nIGRldmljZSBvbiB0aGlzIGZsZWV0OiBhIHBoeXNpY2FsIHBob25lIGlzXG4gKiBvZnRlbiBwbHVnZ2VkIGludG8gdGhlIHNhbWUgbWFjaGluZSwgYW5kIHRoZSBoYXJuZXNzJ3Mgb3duIGBvYnNpZGlhbl90ZXN0YCBBVkRcbiAqIHJ1bnMgYXQgYSBkaWZmZXJlbnQgZ2VvbWV0cnkgdGhhbiB0aGUgYG9ic2lkaWFuX3NjcmVlbnNob3RzYCBBVkQgc2l6ZWQgdG8gdGhlXG4gKiBzdG9yZSdzIGZyYW1lLiBQaWNraW5nIGJ5IHBvc2l0aW9uIHNpbGVudGx5IHBob3RvZ3JhcGhzIHRoZSB3cm9uZyBzY3JlZW4gYXRcbiAqIHRoZSB3cm9uZyBzaXplLCBhbmQgdGhlIGRpbWVuc2lvbiBhc3NlcnRpb24gdGhhdCB3b3VsZCBoYXZlIGNhdWdodCBpdCBmaXJlc1xuICogc2V2ZXJhbCBtaW51dGVzIGxhdGVyLCBhZnRlciB0aGUgcnVuLlxuICpcbiAqIFB1cmUgYW5kIHVuaXQtdGVzdGVkOyB0aGUgYGFkYmAgcm91bmQtdHJpcHMgdGhhdCBnYXRoZXIgdGhlIEFWRCBuYW1lcyBsaXZlIGluXG4gKiBgcmVzb2x2ZS1lbXVsYXRvci1kZXZpY2UtaWRgLlxuICovXG5cbi8qKlxuICogT25lIHJ1bm5pbmcgZW11bGF0b3IsIHBhaXJlZCB3aXRoIHRoZSBBVkQgaXQgd2FzIHN0YXJ0ZWQgZnJvbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXVsYXRvckRldmljZUNhbmRpZGF0ZSB7XG4gIC8qKlxuICAgKiBUaGUgQVZEIG5hbWUgdGhlIGVtdWxhdG9yIHJlcG9ydHMsIGUuZy4gYG9ic2lkaWFuX3NjcmVlbnNob3RzYC5cbiAgICovXG4gIHJlYWRvbmx5IGF2ZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRldmljZSBVRElELCBlLmcuIGBlbXVsYXRvci01NTU0YC5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHNlbGVjdEVtdWxhdG9yRGV2aWNlSWR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEVtdWxhdG9yRGV2aWNlSWRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIEFWRCBuYW1lIHRvIG1hdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFdmVyeSBydW5uaW5nIGVtdWxhdG9yLCB3aXRoIHRoZSBBVkQgZWFjaCB3YXMgc3RhcnRlZCBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FuZGlkYXRlczogcmVhZG9ubHkgRW11bGF0b3JEZXZpY2VDYW5kaWRhdGVbXTtcbn1cblxuLyoqXG4gKiBQaWNrcyB0aGUgZW11bGF0b3Igc3RhcnRlZCBmcm9tIGEgbmFtZWQgQVZELlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgQVZEIHRvIG1hdGNoIGFuZCB0aGUgcnVubmluZyBlbXVsYXRvcnMgdG8gbWF0Y2ggYWdhaW5zdC5cbiAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBkZXZpY2UgVURJRCwgb3IgYG51bGxgIHdoZW4gbm8gcnVubmluZyBlbXVsYXRvciBjYXJyaWVzIHRoYXQgQVZEIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RFbXVsYXRvckRldmljZUlkKHBhcmFtczogU2VsZWN0RW11bGF0b3JEZXZpY2VJZFBhcmFtcyk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHBhcmFtcy5jYW5kaWRhdGVzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLmF2ZE5hbWUgPT09IHBhcmFtcy5hdmROYW1lKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2guZGV2aWNlSWQgOiBudWxsO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBcURPLFNBQVMsdUJBQXVCLFFBQXFEO0FBQzFGLFFBQU0sUUFBUSxPQUFPLFdBQVcsS0FBSyxDQUFDLGNBQWMsVUFBVSxZQUFZLE9BQU8sT0FBTztBQUN4RixTQUFPLFFBQVEsTUFBTSxXQUFXO0FBQ2xDOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/lib/esm/index.d.mts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Contains the entry point for the integration testing module.
|
|
5
5
|
*/
|
|
6
|
+
export type { RunAdbParams } from './adb.mjs';
|
|
7
|
+
export { runAdbBinary, runAdbText, runAdbTextWithoutDevice } from './adb.mjs';
|
|
6
8
|
export type { AsarFallback, AsarFallbackTier, ResolveAsarFallbackParams } from './asar-fallback-detection.mjs';
|
|
7
9
|
export { resolveAsarFallback } from './asar-fallback-detection.mjs';
|
|
8
10
|
export type { CaptureObsidianScreenshotOptions } from './capture-obsidian-screenshot.mjs';
|
|
@@ -25,8 +27,18 @@ export { buildDemoVaultPopulate, resolveMissingInjectedPlugins } from './demo-va
|
|
|
25
27
|
export type { ReadDemoVaultTreeParams } from './demo-vault-tree.mjs';
|
|
26
28
|
export { readDemoVaultTree } from './demo-vault-tree.mjs';
|
|
27
29
|
export { DesktopOnlyPluginSkipError } from './desktop-only-plugin-skip-error.mjs';
|
|
30
|
+
export type { CaptureDeviceScreenshotParams } from './device-screenshot.mjs';
|
|
31
|
+
export { captureDeviceScreenshot } from './device-screenshot.mjs';
|
|
32
|
+
export type { DeviceSettingRestore, DeviceSettingRestoreDelete, DeviceSettingRestoreWrite } from './device-setting-restore.mjs';
|
|
33
|
+
export { DeviceSettingRestoreKind, resolveDeviceSettingRestore } from './device-setting-restore.mjs';
|
|
34
|
+
export type { BuildDeviceSettingsCommandArgumentsParams } from './device-settings-command.mjs';
|
|
35
|
+
export { buildDeviceSettingsCommandArguments, DeviceSettingNamespace, DeviceSettingVerb } from './device-settings-command.mjs';
|
|
36
|
+
export type { DeviceSettingParams, WithSoftKeyboardEnabledParams, WriteDeviceSettingParams } from './device-settings.mjs';
|
|
37
|
+
export { deleteDeviceSetting, readDeviceSetting, withSoftKeyboardEnabled, writeDeviceSetting } from './device-settings.mjs';
|
|
28
38
|
export type { ElectronCompatibility, ElectronCompatibilityTier, ResolveElectronCompatibilityParams } from './electron-compatibility.mjs';
|
|
29
39
|
export { resolveElectronCompatibility } from './electron-compatibility.mjs';
|
|
40
|
+
export type { EmulatorDeviceCandidate, SelectEmulatorDeviceIdParams } from './emulator-device-id.mjs';
|
|
41
|
+
export { selectEmulatorDeviceId } from './emulator-device-id.mjs';
|
|
30
42
|
export type { ClickElementParams, ClickMouseParams, CommonArguments, CreateNoteParams, EvalInObsidianParams, GenericObject, HoverElementParams, Lib, MouseButton, MoveMouseParams, OpenSettingsTabParams, PressKeyParams, TypeIntoEditorParams, UnhoverElementParams, WaitUntilParams } from './eval-in-obsidian.mjs';
|
|
31
43
|
export { evalInObsidian } from './eval-in-obsidian.mjs';
|
|
32
44
|
export type { ComputeFitToCanvasParams, FitScreenshotToCanvasOptions, FitToCanvasGeometry } from './fit-screenshot.mjs';
|
|
@@ -51,10 +63,16 @@ export { OwnedInstanceExitedError } from './owned-instance-exited-error.mjs';
|
|
|
51
63
|
export type { PollInObsidianParams } from './poll-in-obsidian.mjs';
|
|
52
64
|
export { pollInObsidian } from './poll-in-obsidian.mjs';
|
|
53
65
|
export { RendererFailedToInitializeError } from './renderer-failed-to-initialize-error.mjs';
|
|
66
|
+
export type { ResolveEmulatorDeviceIdParams } from './resolve-emulator-device-id.mjs';
|
|
67
|
+
export { resolveEmulatorDeviceId } from './resolve-emulator-device-id.mjs';
|
|
54
68
|
export type { RunObsidianVersionMatrixParams } from './run-version-matrix.mjs';
|
|
55
69
|
export { runObsidianVersionMatrix } from './run-version-matrix.mjs';
|
|
56
70
|
export type { SilentAsarFallbackErrorConstructorParams } from './silent-asar-fallback-error.mjs';
|
|
57
71
|
export { SilentAsarFallbackError } from './silent-asar-fallback-error.mjs';
|
|
72
|
+
export type { BuildSoftKeyboardDiagnosticMessageParams, CheckIsSoftKeyboardUpParams, ElementRect, ResolveSoftKeyboardTapPointsParams, SoftKeyboardTapPoint, SoftKeyboardViewportSnapshot } from './soft-keyboard-geometry.mjs';
|
|
73
|
+
export { buildSoftKeyboardDiagnosticMessage, checkIsSoftKeyboardUp, DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS, parseInputMethodState, resolveSoftKeyboardTapPoints } from './soft-keyboard-geometry.mjs';
|
|
74
|
+
export type { RaiseSoftKeyboardParams, TapDeviceParams } from './soft-keyboard.mjs';
|
|
75
|
+
export { raiseSoftKeyboard, tapDevice } from './soft-keyboard.mjs';
|
|
58
76
|
export type { PopulateFileContent, PopulateFilesParams, TemporaryVaultOptions } from './temporary-vault.mjs';
|
|
59
77
|
export { TemporaryVault } from './temporary-vault.mjs';
|
|
60
78
|
export type { AppiumSessionInfo, AppiumTransportConfig } from './transport-appium.mjs';
|
package/dist/lib/esm/index.mjs
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runAdbBinary,
|
|
3
|
+
runAdbText,
|
|
4
|
+
runAdbTextWithoutDevice
|
|
5
|
+
} from "./adb.mjs";
|
|
1
6
|
import { resolveAsarFallback } from "./asar-fallback-detection.mjs";
|
|
2
7
|
import { captureObsidianScreenshot } from "./capture-obsidian-screenshot.mjs";
|
|
3
8
|
import {
|
|
@@ -28,7 +33,24 @@ import {
|
|
|
28
33
|
} from "./demo-vault-populate.mjs";
|
|
29
34
|
import { readDemoVaultTree } from "./demo-vault-tree.mjs";
|
|
30
35
|
import { DesktopOnlyPluginSkipError } from "./desktop-only-plugin-skip-error.mjs";
|
|
36
|
+
import { captureDeviceScreenshot } from "./device-screenshot.mjs";
|
|
37
|
+
import {
|
|
38
|
+
DeviceSettingRestoreKind,
|
|
39
|
+
resolveDeviceSettingRestore
|
|
40
|
+
} from "./device-setting-restore.mjs";
|
|
41
|
+
import {
|
|
42
|
+
buildDeviceSettingsCommandArguments,
|
|
43
|
+
DeviceSettingNamespace,
|
|
44
|
+
DeviceSettingVerb
|
|
45
|
+
} from "./device-settings-command.mjs";
|
|
46
|
+
import {
|
|
47
|
+
deleteDeviceSetting,
|
|
48
|
+
readDeviceSetting,
|
|
49
|
+
withSoftKeyboardEnabled,
|
|
50
|
+
writeDeviceSetting
|
|
51
|
+
} from "./device-settings.mjs";
|
|
31
52
|
import { resolveElectronCompatibility } from "./electron-compatibility.mjs";
|
|
53
|
+
import { selectEmulatorDeviceId } from "./emulator-device-id.mjs";
|
|
32
54
|
import { evalInObsidian } from "./eval-in-obsidian.mjs";
|
|
33
55
|
import {
|
|
34
56
|
computeFitToCanvas,
|
|
@@ -53,8 +75,20 @@ import { openObsidianSettingsTab } from "./open-obsidian-settings-tab.mjs";
|
|
|
53
75
|
import { OwnedInstanceExitedError } from "./owned-instance-exited-error.mjs";
|
|
54
76
|
import { pollInObsidian } from "./poll-in-obsidian.mjs";
|
|
55
77
|
import { RendererFailedToInitializeError } from "./renderer-failed-to-initialize-error.mjs";
|
|
78
|
+
import { resolveEmulatorDeviceId } from "./resolve-emulator-device-id.mjs";
|
|
56
79
|
import { runObsidianVersionMatrix } from "./run-version-matrix.mjs";
|
|
57
80
|
import { SilentAsarFallbackError } from "./silent-asar-fallback-error.mjs";
|
|
81
|
+
import {
|
|
82
|
+
buildSoftKeyboardDiagnosticMessage,
|
|
83
|
+
checkIsSoftKeyboardUp,
|
|
84
|
+
DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS,
|
|
85
|
+
parseInputMethodState,
|
|
86
|
+
resolveSoftKeyboardTapPoints
|
|
87
|
+
} from "./soft-keyboard-geometry.mjs";
|
|
88
|
+
import {
|
|
89
|
+
raiseSoftKeyboard,
|
|
90
|
+
tapDevice
|
|
91
|
+
} from "./soft-keyboard.mjs";
|
|
58
92
|
import { TemporaryVault } from "./temporary-vault.mjs";
|
|
59
93
|
import { AppiumTransport } from "./transport-appium.mjs";
|
|
60
94
|
import { DesktopCdpTransport } from "./transport-desktop-cdp.mjs";
|
|
@@ -71,9 +105,13 @@ export {
|
|
|
71
105
|
ConfigDirectoryFallbackError,
|
|
72
106
|
ContextId,
|
|
73
107
|
DEFAULT_CONFIG_DIRECTORY,
|
|
108
|
+
DEFAULT_MINIMUM_KEYBOARD_HEIGHT_IN_PIXELS,
|
|
74
109
|
DEFAULT_OBSIDIAN_VERSION_SPECS,
|
|
75
110
|
DesktopCdpTransport,
|
|
76
111
|
DesktopOnlyPluginSkipError,
|
|
112
|
+
DeviceSettingNamespace,
|
|
113
|
+
DeviceSettingRestoreKind,
|
|
114
|
+
DeviceSettingVerb,
|
|
77
115
|
IncompatibleInstallerVersionError,
|
|
78
116
|
IntegrationSetupFailedError,
|
|
79
117
|
OwnedInstanceExitedError,
|
|
@@ -86,14 +124,19 @@ export {
|
|
|
86
124
|
buildDemoVaultPopulate,
|
|
87
125
|
buildDemoVaultPopulateAsync,
|
|
88
126
|
buildDeviceMetricsOverride,
|
|
127
|
+
buildDeviceSettingsCommandArguments,
|
|
89
128
|
buildLabelSvg,
|
|
129
|
+
buildSoftKeyboardDiagnosticMessage,
|
|
130
|
+
captureDeviceScreenshot,
|
|
90
131
|
captureObsidianScreenshot,
|
|
91
132
|
checkIsMobileTransport,
|
|
133
|
+
checkIsSoftKeyboardUp,
|
|
92
134
|
computeFitToCanvas,
|
|
93
135
|
computeLabelBand,
|
|
94
136
|
connectToCdp,
|
|
95
137
|
createTransportFromOptions,
|
|
96
138
|
decodeBase64Png,
|
|
139
|
+
deleteDeviceSetting,
|
|
97
140
|
escapeSvgText,
|
|
98
141
|
evalInObsidian,
|
|
99
142
|
fitScreenshotToCanvas,
|
|
@@ -101,19 +144,32 @@ export {
|
|
|
101
144
|
isPng,
|
|
102
145
|
labelScreenshot,
|
|
103
146
|
openObsidianSettingsTab,
|
|
147
|
+
parseInputMethodState,
|
|
104
148
|
pollInObsidian,
|
|
149
|
+
raiseSoftKeyboard,
|
|
105
150
|
readDemoVaultTree,
|
|
151
|
+
readDeviceSetting,
|
|
106
152
|
readPngDimensions,
|
|
107
153
|
registerLibResolver,
|
|
108
154
|
registerVault,
|
|
109
155
|
resolveAsarFallback,
|
|
156
|
+
resolveDeviceSettingRestore,
|
|
110
157
|
resolveElectronCompatibility,
|
|
158
|
+
resolveEmulatorDeviceId,
|
|
111
159
|
resolveInstallerCompatibility,
|
|
112
160
|
resolveMissingInjectedPlugins,
|
|
161
|
+
resolveSoftKeyboardTapPoints,
|
|
162
|
+
runAdbBinary,
|
|
163
|
+
runAdbText,
|
|
164
|
+
runAdbTextWithoutDevice,
|
|
113
165
|
runObsidianVersionMatrix,
|
|
166
|
+
selectEmulatorDeviceId,
|
|
114
167
|
setSetupErrorResolver,
|
|
115
168
|
setTransportOptionsResolver,
|
|
116
169
|
setVaultPathResolver,
|
|
117
|
-
|
|
170
|
+
tapDevice,
|
|
171
|
+
unregisterVault,
|
|
172
|
+
withSoftKeyboardEnabled,
|
|
173
|
+
writeDeviceSetting
|
|
118
174
|
};
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24ubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgQ29uZmlnRGlyZWN0b3J5RmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgeyBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQge1xuICBhc3NlcnRWYWxpZENvbmZpZ0RpcmVjdG9yeSxcbiAgREVGQVVMVF9DT05GSUdfRElSRUNUT1JZXG59IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDZHBDb25uZWN0aW9uLFxuICBDb25uZWN0VG9DZHBPcHRpb25zXG59IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmV4cG9ydCB7IGNvbm5lY3RUb0NkcCB9IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29udGV4dEFyZ3VtZW50cyxcbiAgQ29udGV4dE9mXG59IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuZXhwb3J0IHsgQ29udGV4dElkIH0gZnJvbSAnLi9jb250ZXh0LWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFNldHVwRXJyb3JSZXNvbHZlcixcbiAgVHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmV4cG9ydCB7XG4gIHNldFNldHVwRXJyb3JSZXNvbHZlcixcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1BhcmFtcyxcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1Jlc3VsdCxcbiAgSW5zdGFsbGVkUGx1Z2luSW5mb1xufSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLm1qcyc7XG5leHBvcnQge1xuICBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zLFxuICBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXMsXG4gIFJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJlYWREZW1vVmF1bHRUcmVlUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IHJlYWREZW1vVmF1bHRUcmVlIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIH0gZnJvbSAnLi9kZXNrdG9wLW9ubHktcGx1Z2luLXNraXAtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5LFxuICBFbGVjdHJvbkNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlRWxlY3Ryb25Db21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDbGlja0VsZW1lbnRQYXJhbXMsXG4gIENsaWNrTW91c2VQYXJhbXMsXG4gIENvbW1vbkFyZ3VtZW50cyxcbiAgQ3JlYXRlTm90ZVBhcmFtcyxcbiAgRXZhbEluT2JzaWRpYW5QYXJhbXMsXG4gIEdlbmVyaWNPYmplY3QsXG4gIEhvdmVyRWxlbWVudFBhcmFtcyxcbiAgTGliLFxuICBNb3VzZUJ1dHRvbixcbiAgTW92ZU1vdXNlUGFyYW1zLFxuICBPcGVuU2V0dGluZ3NUYWJQYXJhbXMsXG4gIFByZXNzS2V5UGFyYW1zLFxuICBUeXBlSW50b0VkaXRvclBhcmFtcyxcbiAgVW5ob3ZlckVsZW1lbnRQYXJhbXMsXG4gIFdhaXRVbnRpbFBhcmFtc1xufSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB7IGV2YWxJbk9ic2lkaWFuIH0gZnJvbSAnLi9ldmFsLWluLW9ic2lkaWFuLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbXB1dGVGaXRUb0NhbnZhc1BhcmFtcyxcbiAgRml0U2NyZWVuc2hvdFRvQ2FudmFzT3B0aW9ucyxcbiAgRml0VG9DYW52YXNHZW9tZXRyeVxufSBmcm9tICcuL2ZpdC1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBjb21wdXRlRml0VG9DYW52YXMsXG4gIGZpdFNjcmVlbnNob3RUb0NhbnZhc1xufSBmcm9tICcuL2ZpdC1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9pbmNvbXBhdGlibGUtaW5zdGFsbGVyLXZlcnNpb24tZXJyb3IubWpzJztcbmV4cG9ydCB7IEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvciB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHksXG4gIEluc3RhbGxlckNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5Lm1qcyc7XG5leHBvcnQgeyByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkubWpzJztcbmV4cG9ydCB0eXBlIHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci5tanMnO1xuZXhwb3J0IHsgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUxhYmVsQmFuZFBhcmFtcyxcbiAgTGFiZWxCYW5kR2VvbWV0cnksXG4gIExhYmVsU2NyZWVuc2hvdE9wdGlvbnNcbn0gZnJvbSAnLi9sYWJlbC1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZExhYmVsU3ZnLFxuICBjb21wdXRlTGFiZWxCYW5kLFxuICBlc2NhcGVTdmdUZXh0LFxuICBsYWJlbFNjcmVlbnNob3Rcbn0gZnJvbSAnLi9sYWJlbC1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7IExpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkubWpzJztcbmV4cG9ydCB7IHJlZ2lzdGVyTGliUmVzb2x2ZXIgfSBmcm9tICcuL2xpYi1yZWdpc3RyeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBPYnNpZGlhblJ1bnRpbWVWZXJzaW9ucyxcbiAgT2JzaWRpYW5WZXJzaW9uQ2hhbmdlbG9nVXJscyxcbiAgT2JzaWRpYW5WZXJzaW9uRG93bmxvYWRzLFxuICBPYnNpZGlhblZlcnNpb25NZXRhZGF0YVxufSBmcm9tICcuL29ic2lkaWFuLW1ldGFkYXRhLm1qcyc7XG5leHBvcnQgeyBnZXRWZXJzaW9uTWV0YWRhdGEgfSBmcm9tICcuL29ic2lkaWFuLW1ldGFkYXRhLm1qcyc7XG5leHBvcnQge1xuICBDQVRBTFlTVF9MQVRFU1QsXG4gIFBVQkxJQ19MQVRFU1Rcbn0gZnJvbSAnLi9vYnNpZGlhbi12ZXJzaW9uLm1qcyc7XG5leHBvcnQgdHlwZSB7IE9wZW5PYnNpZGlhblNldHRpbmdzVGFiT3B0aW9ucyB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIubWpzJztcbmV4cG9ydCB7IG9wZW5PYnNpZGlhblNldHRpbmdzVGFiIH0gZnJvbSAnLi9vcGVuLW9ic2lkaWFuLXNldHRpbmdzLXRhYi5tanMnO1xuZXhwb3J0IHR5cGUgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vb3duZWQtaW5zdGFuY2UtZXhpdGVkLWVycm9yLm1qcyc7XG5leHBvcnQgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3IgfSBmcm9tICcuL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci5tanMnO1xuZXhwb3J0IHR5cGUgeyBQb2xsSW5PYnNpZGlhblBhcmFtcyB9IGZyb20gJy4vcG9sbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgcG9sbEluT2JzaWRpYW4gfSBmcm9tICcuL3BvbGwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB7IFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3IgfSBmcm9tICcuL3JlbmRlcmVyLWZhaWxlZC10by1pbml0aWFsaXplLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeFBhcmFtcyB9IGZyb20gJy4vcnVuLXZlcnNpb24tbWF0cml4Lm1qcyc7XG5leHBvcnQgeyBydW5PYnNpZGlhblZlcnNpb25NYXRyaXggfSBmcm9tICcuL3J1bi12ZXJzaW9uLW1hdHJpeC5tanMnO1xuZXhwb3J0IHR5cGUgeyBTaWxlbnRBc2FyRmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9zaWxlbnQtYXNhci1mYWxsYmFjay1lcnJvci5tanMnO1xuZXhwb3J0IHsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3IgfSBmcm9tICcuL3NpbGVudC1hc2FyLWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFBvcHVsYXRlRmlsZUNvbnRlbnQsXG4gIFBvcHVsYXRlRmlsZXNQYXJhbXMsXG4gIFRlbXBvcmFyeVZhdWx0T3B0aW9uc1xufSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5tanMnO1xuZXhwb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBBcHBpdW1TZXNzaW9uSW5mbyxcbiAgQXBwaXVtVHJhbnNwb3J0Q29uZmlnXG59IGZyb20gJy4vdHJhbnNwb3J0LWFwcGl1bS5tanMnO1xuZXhwb3J0IHsgQXBwaXVtVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIERlc2t0b3BDZHBUcmFuc3BvcnRDb25maWcsXG4gIE93bmVkSW5zdGFuY2VBc2FyLFxuICBPd25lZEluc3RhbmNlQ29uZmlnLFxuICBPd25lZEluc3RhbmNlRW5kcG9pbnRcbn0gZnJvbSAnLi90cmFuc3BvcnQtZGVza3RvcC1jZHAubWpzJztcbmV4cG9ydCB7IERlc2t0b3BDZHBUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5tanMnO1xuZXhwb3J0IHsgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMgfSBmcm9tICcuL3RyYW5zcG9ydC1mYWN0b3J5Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnMsXG4gIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zXG59IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcbmV4cG9ydCB7IGNoZWNrSXNNb2JpbGVUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1vcHRpb25zLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnNvbGVDYXB0dXJlSGFuZGxlLFxuICBPYnNpZGlhblRyYW5zcG9ydCxcbiAgVHJhbnNwb3J0RXZhbE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQubWpzJztcbmV4cG9ydCB7XG4gIHJlZ2lzdGVyVmF1bHQsXG4gIHVucmVnaXN0ZXJWYXVsdFxufSBmcm9tICcuL3ZhdWx0LXJlZ2lzdHJ5Lm1qcyc7XG5leHBvcnQgdHlwZSB7IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5IH0gZnJvbSAnLi92ZXJzaW9uLW1hdHJpeC5tanMnO1xuZXhwb3J0IHsgREVGQVVMVF9PQlNJRElBTl9WRVJTSU9OX1NQRUNTIH0gZnJvbSAnLi92ZXJzaW9uLW1hdHJpeC5tanMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBV0EsU0FBUywyQkFBMkI7QUFFcEMsU0FBUyxpQ0FBaUM7QUFLMUM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsb0NBQW9DO0FBQzdDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS1AsU0FBUyxvQkFBb0I7QUFLN0IsU0FBUyxpQkFBaUI7QUFNMUI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFNUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsa0NBQWtDO0FBTTNDLFNBQVMsb0NBQW9DO0FBa0I3QyxTQUFTLHNCQUFzQjtBQU0vQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMseUNBQXlDO0FBTWxELFNBQVMscUNBQXFDO0FBRTlDLFNBQVMsbUNBQW1DO0FBTTVDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLDJCQUEyQjtBQU9wQyxTQUFTLDBCQUEwQjtBQUNuQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsK0JBQStCO0FBRXhDLFNBQVMsZ0NBQWdDO0FBRXpDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsdUNBQXVDO0FBRWhELFNBQVMsZ0NBQWdDO0FBRXpDLFNBQVMsK0JBQStCO0FBTXhDLFNBQVMsc0JBQXNCO0FBSy9CLFNBQVMsdUJBQXVCO0FBT2hDLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsa0NBQWtDO0FBTTNDLFNBQVMsOEJBQThCO0FBTXZDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUyxzQ0FBc0M7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUgeyBSdW5BZGJQYXJhbXMgfSBmcm9tICcuL2FkYi5tanMnO1xuZXhwb3J0IHtcbiAgcnVuQWRiQmluYXJ5LFxuICBydW5BZGJUZXh0LFxuICBydW5BZGJUZXh0V2l0aG91dERldmljZVxufSBmcm9tICcuL2FkYi5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24ubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgQ29uZmlnRGlyZWN0b3J5RmFsbGJhY2tFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgeyBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yIH0gZnJvbSAnLi9jb25maWctZGlyZWN0b3J5LWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQge1xuICBhc3NlcnRWYWxpZENvbmZpZ0RpcmVjdG9yeSxcbiAgREVGQVVMVF9DT05GSUdfRElSRUNUT1JZXG59IGZyb20gJy4vY29uZmlnLWRpcmVjdG9yeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDZHBDb25uZWN0aW9uLFxuICBDb25uZWN0VG9DZHBPcHRpb25zXG59IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmV4cG9ydCB7IGNvbm5lY3RUb0NkcCB9IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29udGV4dEFyZ3VtZW50cyxcbiAgQ29udGV4dE9mXG59IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuZXhwb3J0IHsgQ29udGV4dElkIH0gZnJvbSAnLi9jb250ZXh0LWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFNldHVwRXJyb3JSZXNvbHZlcixcbiAgVHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmV4cG9ydCB7XG4gIHNldFNldHVwRXJyb3JSZXNvbHZlcixcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1BhcmFtcyxcbiAgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1Jlc3VsdCxcbiAgSW5zdGFsbGVkUGx1Z2luSW5mb1xufSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLm1qcyc7XG5leHBvcnQge1xuICBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zLFxuICBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXMsXG4gIFJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zUGFyYW1zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLm1qcyc7XG5leHBvcnQgdHlwZSB7IFJlYWREZW1vVmF1bHRUcmVlUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IHJlYWREZW1vVmF1bHRUcmVlIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXRyZWUubWpzJztcbmV4cG9ydCB7IERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIH0gZnJvbSAnLi9kZXNrdG9wLW9ubHktcGx1Z2luLXNraXAtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZURldmljZVNjcmVlbnNob3RQYXJhbXMgfSBmcm9tICcuL2RldmljZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgeyBjYXB0dXJlRGV2aWNlU2NyZWVuc2hvdCB9IGZyb20gJy4vZGV2aWNlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmUsXG4gIERldmljZVNldHRpbmdSZXN0b3JlRGVsZXRlLFxuICBEZXZpY2VTZXR0aW5nUmVzdG9yZVdyaXRlXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmctcmVzdG9yZS5tanMnO1xuZXhwb3J0IHtcbiAgRGV2aWNlU2V0dGluZ1Jlc3RvcmVLaW5kLFxuICByZXNvbHZlRGV2aWNlU2V0dGluZ1Jlc3RvcmVcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZy1yZXN0b3JlLm1qcyc7XG5leHBvcnQgdHlwZSB7IEJ1aWxkRGV2aWNlU2V0dGluZ3NDb21tYW5kQXJndW1lbnRzUGFyYW1zIH0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MtY29tbWFuZC5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGREZXZpY2VTZXR0aW5nc0NvbW1hbmRBcmd1bWVudHMsXG4gIERldmljZVNldHRpbmdOYW1lc3BhY2UsXG4gIERldmljZVNldHRpbmdWZXJiXG59IGZyb20gJy4vZGV2aWNlLXNldHRpbmdzLWNvbW1hbmQubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGV2aWNlU2V0dGluZ1BhcmFtcyxcbiAgV2l0aFNvZnRLZXlib2FyZEVuYWJsZWRQYXJhbXMsXG4gIFdyaXRlRGV2aWNlU2V0dGluZ1BhcmFtc1xufSBmcm9tICcuL2RldmljZS1zZXR0aW5ncy5tanMnO1xuZXhwb3J0IHtcbiAgZGVsZXRlRGV2aWNlU2V0dGluZyxcbiAgcmVhZERldmljZVNldHRpbmcsXG4gIHdpdGhTb2Z0S2V5Ym9hcmRFbmFibGVkLFxuICB3cml0ZURldmljZVNldHRpbmdcbn0gZnJvbSAnLi9kZXZpY2Utc2V0dGluZ3MubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5LFxuICBFbGVjdHJvbkNvbXBhdGliaWxpdHlUaWVyLFxuICBSZXNvbHZlRWxlY3Ryb25Db21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBFbXVsYXRvckRldmljZUNhbmRpZGF0ZSxcbiAgU2VsZWN0RW11bGF0b3JEZXZpY2VJZFBhcmFtc1xufSBmcm9tICcuL2VtdWxhdG9yLWRldmljZS1pZC5tanMnO1xuZXhwb3J0IHsgc2VsZWN0RW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vZW11bGF0b3ItZGV2aWNlLWlkLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENsaWNrRWxlbWVudFBhcmFtcyxcbiAgQ2xpY2tNb3VzZVBhcmFtcyxcbiAgQ29tbW9uQXJndW1lbnRzLFxuICBDcmVhdGVOb3RlUGFyYW1zLFxuICBFdmFsSW5PYnNpZGlhblBhcmFtcyxcbiAgR2VuZXJpY09iamVjdCxcbiAgSG92ZXJFbGVtZW50UGFyYW1zLFxuICBMaWIsXG4gIE1vdXNlQnV0dG9uLFxuICBNb3ZlTW91c2VQYXJhbXMsXG4gIE9wZW5TZXR0aW5nc1RhYlBhcmFtcyxcbiAgUHJlc3NLZXlQYXJhbXMsXG4gIFR5cGVJbnRvRWRpdG9yUGFyYW1zLFxuICBVbmhvdmVyRWxlbWVudFBhcmFtcyxcbiAgV2FpdFVudGlsUGFyYW1zXG59IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29tcHV0ZUZpdFRvQ2FudmFzUGFyYW1zLFxuICBGaXRTY3JlZW5zaG90VG9DYW52YXNPcHRpb25zLFxuICBGaXRUb0NhbnZhc0dlb21ldHJ5XG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB7XG4gIGNvbXB1dGVGaXRUb0NhbnZhcyxcbiAgZml0U2NyZWVuc2hvdFRvQ2FudmFzXG59IGZyb20gJy4vZml0LXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL2luY29tcGF0aWJsZS1pbnN0YWxsZXItdmVyc2lvbi1lcnJvci5tanMnO1xuZXhwb3J0IHsgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yIH0gZnJvbSAnLi9pbmNvbXBhdGlibGUtaW5zdGFsbGVyLXZlcnNpb24tZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSxcbiAgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXIsXG4gIFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5UGFyYW1zXG59IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkubWpzJztcbmV4cG9ydCB7IHJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5IH0gZnJvbSAnLi9pbnN0YWxsZXItY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHR5cGUgeyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vaW50ZWdyYXRpb24tc2V0dXAtZmFpbGVkLWVycm9yLm1qcyc7XG5leHBvcnQgeyBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3IgfSBmcm9tICcuL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDb21wdXRlTGFiZWxCYW5kUGFyYW1zLFxuICBMYWJlbEJhbmRHZW9tZXRyeSxcbiAgTGFiZWxTY3JlZW5zaG90T3B0aW9uc1xufSBmcm9tICcuL2xhYmVsLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB7XG4gIGJ1aWxkTGFiZWxTdmcsXG4gIGNvbXB1dGVMYWJlbEJhbmQsXG4gIGVzY2FwZVN2Z1RleHQsXG4gIGxhYmVsU2NyZWVuc2hvdFxufSBmcm9tICcuL2xhYmVsLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHsgTGliUmVzb2x2ZXIgfSBmcm9tICcuL2xpYi1yZWdpc3RyeS5tanMnO1xuZXhwb3J0IHsgcmVnaXN0ZXJMaWJSZXNvbHZlciB9IGZyb20gJy4vbGliLXJlZ2lzdHJ5Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIE9ic2lkaWFuUnVudGltZVZlcnNpb25zLFxuICBPYnNpZGlhblZlcnNpb25DaGFuZ2Vsb2dVcmxzLFxuICBPYnNpZGlhblZlcnNpb25Eb3dubG9hZHMsXG4gIE9ic2lkaWFuVmVyc2lvbk1ldGFkYXRhXG59IGZyb20gJy4vb2JzaWRpYW4tbWV0YWRhdGEubWpzJztcbmV4cG9ydCB7IGdldFZlcnNpb25NZXRhZGF0YSB9IGZyb20gJy4vb2JzaWRpYW4tbWV0YWRhdGEubWpzJztcbmV4cG9ydCB7XG4gIENBVEFMWVNUX0xBVEVTVCxcbiAgUFVCTElDX0xBVEVTVFxufSBmcm9tICcuL29ic2lkaWFuLXZlcnNpb24ubWpzJztcbmV4cG9ydCB0eXBlIHsgT3Blbk9ic2lkaWFuU2V0dGluZ3NUYWJPcHRpb25zIH0gZnJvbSAnLi9vcGVuLW9ic2lkaWFuLXNldHRpbmdzLXRhYi5tanMnO1xuZXhwb3J0IHsgb3Blbk9ic2lkaWFuU2V0dGluZ3NUYWIgfSBmcm9tICcuL29wZW4tb2JzaWRpYW4tc2V0dGluZ3MtdGFiLm1qcyc7XG5leHBvcnQgdHlwZSB7IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9vd25lZC1pbnN0YW5jZS1leGl0ZWQtZXJyb3IubWpzJztcbmV4cG9ydCB7IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvciB9IGZyb20gJy4vb3duZWQtaW5zdGFuY2UtZXhpdGVkLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7IFBvbGxJbk9ic2lkaWFuUGFyYW1zIH0gZnJvbSAnLi9wb2xsLWluLW9ic2lkaWFuLm1qcyc7XG5leHBvcnQgeyBwb2xsSW5PYnNpZGlhbiB9IGZyb20gJy4vcG9sbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHsgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvciB9IGZyb20gJy4vcmVuZGVyZXItZmFpbGVkLXRvLWluaXRpYWxpemUtZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHsgUmVzb2x2ZUVtdWxhdG9yRGV2aWNlSWRQYXJhbXMgfSBmcm9tICcuL3Jlc29sdmUtZW11bGF0b3ItZGV2aWNlLWlkLm1qcyc7XG5leHBvcnQgeyByZXNvbHZlRW11bGF0b3JEZXZpY2VJZCB9IGZyb20gJy4vcmVzb2x2ZS1lbXVsYXRvci1kZXZpY2UtaWQubWpzJztcbmV4cG9ydCB0eXBlIHsgUnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4UGFyYW1zIH0gZnJvbSAnLi9ydW4tdmVyc2lvbi1tYXRyaXgubWpzJztcbmV4cG9ydCB7IHJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeCB9IGZyb20gJy4vcnVuLXZlcnNpb24tbWF0cml4Lm1qcyc7XG5leHBvcnQgdHlwZSB7IFNpbGVudEFzYXJGYWxsYmFja0Vycm9yQ29uc3RydWN0b3JQYXJhbXMgfSBmcm9tICcuL3NpbGVudC1hc2FyLWZhbGxiYWNrLWVycm9yLm1qcyc7XG5leHBvcnQgeyBTaWxlbnRBc2FyRmFsbGJhY2tFcnJvciB9IGZyb20gJy4vc2lsZW50LWFzYXItZmFsbGJhY2stZXJyb3IubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnVpbGRTb2Z0S2V5Ym9hcmREaWFnbm9zdGljTWVzc2FnZVBhcmFtcyxcbiAgQ2hlY2tJc1NvZnRLZXlib2FyZFVwUGFyYW1zLFxuICBFbGVtZW50UmVjdCxcbiAgUmVzb2x2ZVNvZnRLZXlib2FyZFRhcFBvaW50c1BhcmFtcyxcbiAgU29mdEtleWJvYXJkVGFwUG9pbnQsXG4gIFNvZnRLZXlib2FyZFZpZXdwb3J0U25hcHNob3Rcbn0gZnJvbSAnLi9zb2Z0LWtleWJvYXJkLWdlb21ldHJ5Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZFNvZnRLZXlib2FyZERpYWdub3N0aWNNZXNzYWdlLFxuICBjaGVja0lzU29mdEtleWJvYXJkVXAsXG4gIERFRkFVTFRfTUlOSU1VTV9LRVlCT0FSRF9IRUlHSFRfSU5fUElYRUxTLFxuICBwYXJzZUlucHV0TWV0aG9kU3RhdGUsXG4gIHJlc29sdmVTb2Z0S2V5Ym9hcmRUYXBQb2ludHNcbn0gZnJvbSAnLi9zb2Z0LWtleWJvYXJkLWdlb21ldHJ5Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIFJhaXNlU29mdEtleWJvYXJkUGFyYW1zLFxuICBUYXBEZXZpY2VQYXJhbXNcbn0gZnJvbSAnLi9zb2Z0LWtleWJvYXJkLm1qcyc7XG5leHBvcnQge1xuICByYWlzZVNvZnRLZXlib2FyZCxcbiAgdGFwRGV2aWNlXG59IGZyb20gJy4vc29mdC1rZXlib2FyZC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBQb3B1bGF0ZUZpbGVDb250ZW50LFxuICBQb3B1bGF0ZUZpbGVzUGFyYW1zLFxuICBUZW1wb3JhcnlWYXVsdE9wdGlvbnNcbn0gZnJvbSAnLi90ZW1wb3JhcnktdmF1bHQubWpzJztcbmV4cG9ydCB7IFRlbXBvcmFyeVZhdWx0IH0gZnJvbSAnLi90ZW1wb3JhcnktdmF1bHQubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQXBwaXVtU2Vzc2lvbkluZm8sXG4gIEFwcGl1bVRyYW5zcG9ydENvbmZpZ1xufSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0ubWpzJztcbmV4cG9ydCB7IEFwcGl1bVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWFwcGl1bS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBEZXNrdG9wQ2RwVHJhbnNwb3J0Q29uZmlnLFxuICBPd25lZEluc3RhbmNlQXNhcixcbiAgT3duZWRJbnN0YW5jZUNvbmZpZyxcbiAgT3duZWRJbnN0YW5jZUVuZHBvaW50XG59IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLm1qcyc7XG5leHBvcnQgeyBEZXNrdG9wQ2RwVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtZGVza3RvcC1jZHAubWpzJztcbmV4cG9ydCB7IGNyZWF0ZVRyYW5zcG9ydEZyb21PcHRpb25zIH0gZnJvbSAnLi90cmFuc3BvcnQtZmFjdG9yeS5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnMsXG4gIE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC1vcHRpb25zLm1qcyc7XG5leHBvcnQgeyBjaGVja0lzTW9iaWxlVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDb25zb2xlQ2FwdHVyZUhhbmRsZSxcbiAgT2JzaWRpYW5UcmFuc3BvcnQsXG4gIFRyYW5zcG9ydEV2YWxPcHRpb25zXG59IGZyb20gJy4vdHJhbnNwb3J0Lm1qcyc7XG5leHBvcnQge1xuICByZWdpc3RlclZhdWx0LFxuICB1bnJlZ2lzdGVyVmF1bHRcbn0gZnJvbSAnLi92YXVsdC1yZWdpc3RyeS5tanMnO1xuZXhwb3J0IHR5cGUgeyBPYnNpZGlhblZlcnNpb25NYXRyaXhFbnRyeSB9IGZyb20gJy4vdmVyc2lvbi1tYXRyaXgubWpzJztcbmV4cG9ydCB7IERFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDUyB9IGZyb20gJy4vdmVyc2lvbi1tYXRyaXgubWpzJztcbiJdLAogICJtYXBwaW5ncyI6ICJBQU9BO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU1QLFNBQVMsMkJBQTJCO0FBRXBDLFNBQVMsaUNBQWlDO0FBSzFDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLG9DQUFvQztBQUM3QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtQLFNBQVMsb0JBQW9CO0FBSzdCLFNBQVMsaUJBQWlCO0FBTTFCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU1QO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGtDQUFrQztBQUUzQyxTQUFTLCtCQUErQjtBQU14QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU1QO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFNUCxTQUFTLG9DQUFvQztBQUs3QyxTQUFTLDhCQUE4QjtBQWtCdkMsU0FBUyxzQkFBc0I7QUFNL0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHlDQUF5QztBQU1sRCxTQUFTLHFDQUFxQztBQUU5QyxTQUFTLG1DQUFtQztBQU01QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUywyQkFBMkI7QUFPcEMsU0FBUywwQkFBMEI7QUFDbkM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLCtCQUErQjtBQUV4QyxTQUFTLGdDQUFnQztBQUV6QyxTQUFTLHNCQUFzQjtBQUMvQixTQUFTLHVDQUF1QztBQUVoRCxTQUFTLCtCQUErQjtBQUV4QyxTQUFTLGdDQUFnQztBQUV6QyxTQUFTLCtCQUErQjtBQVN4QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVAsU0FBUyxzQkFBc0I7QUFLL0IsU0FBUyx1QkFBdUI7QUFPaEMsU0FBUywyQkFBMkI7QUFDcEMsU0FBUyxrQ0FBa0M7QUFNM0MsU0FBUyw4QkFBOEI7QUFNdkM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLHNDQUFzQzsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/lib/esm/library.mjs
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Asks the running emulators which AVD each was started from, and resolves one
|
|
5
|
+
* by name through {@link ./emulator-device-id.ts}'s selection.
|
|
6
|
+
*
|
|
7
|
+
* Every function here shells out, so the whole module is integration-time code
|
|
8
|
+
* — which is exactly why the selection it delegates to lives in its own module
|
|
9
|
+
* and stays unit-tested.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Parameters for {@link resolveEmulatorDeviceId}.
|
|
13
|
+
*/
|
|
14
|
+
export interface ResolveEmulatorDeviceIdParams {
|
|
15
|
+
/**
|
|
16
|
+
* The AVD name to match, e.g. `obsidian_screenshots`.
|
|
17
|
+
*/
|
|
18
|
+
readonly avdName: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Finds the running emulator whose AVD is the named one.
|
|
22
|
+
*
|
|
23
|
+
* @param params - The AVD to match.
|
|
24
|
+
* @returns A {@link Promise} that resolves to the device UDID to address it by.
|
|
25
|
+
* @throws Error if no running emulator was started from that AVD. The message lists what IS running, since
|
|
26
|
+
* "the wrong emulator is up" and "no emulator is up" need different answers.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveEmulatorDeviceId(params: ResolveEmulatorDeviceIdParams): Promise<string>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { listOnlineDeviceIds } from "./adb-device-list.mjs";
|
|
2
|
+
import {
|
|
3
|
+
runAdbText,
|
|
4
|
+
runAdbTextWithoutDevice
|
|
5
|
+
} from "./adb.mjs";
|
|
6
|
+
import { selectEmulatorDeviceId } from "./emulator-device-id.mjs";
|
|
7
|
+
const EMULATOR_DEVICE_ID_PREFIX = "emulator-";
|
|
8
|
+
async function resolveEmulatorDeviceId(params) {
|
|
9
|
+
const candidates = await listEmulatorDeviceCandidates();
|
|
10
|
+
const deviceId = selectEmulatorDeviceId({ avdName: params.avdName, candidates });
|
|
11
|
+
if (!deviceId) {
|
|
12
|
+
const listed = candidates.map((candidate) => `${candidate.deviceId} (${candidate.avdName})`).join(", ") || "none";
|
|
13
|
+
throw new Error(
|
|
14
|
+
`resolveEmulatorDeviceId: no running emulator for AVD "${params.avdName}". Running emulators: ${listed}. Start it, or run this project once to have the harness start it.`
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
return deviceId;
|
|
18
|
+
}
|
|
19
|
+
async function listEmulatorDeviceCandidates() {
|
|
20
|
+
const devicesOutput = await runAdbTextWithoutDevice(["devices"]);
|
|
21
|
+
const deviceIds = listOnlineDeviceIds(devicesOutput).filter((deviceId) => deviceId.startsWith(EMULATOR_DEVICE_ID_PREFIX));
|
|
22
|
+
const candidates = [];
|
|
23
|
+
for (const deviceId of deviceIds) {
|
|
24
|
+
const output = await runAdbText({ commandArguments: ["emu", "avd", "name"], deviceId });
|
|
25
|
+
const avdName = output.split("\n", 1)[0]?.trim() ?? "";
|
|
26
|
+
candidates.push({ avdName, deviceId });
|
|
27
|
+
}
|
|
28
|
+
return candidates;
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
resolveEmulatorDeviceId
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Jlc29sdmUtZW11bGF0b3ItZGV2aWNlLWlkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQXNrcyB0aGUgcnVubmluZyBlbXVsYXRvcnMgd2hpY2ggQVZEIGVhY2ggd2FzIHN0YXJ0ZWQgZnJvbSwgYW5kIHJlc29sdmVzIG9uZVxuICogYnkgbmFtZSB0aHJvdWdoIHtAbGluayAuL2VtdWxhdG9yLWRldmljZS1pZC50c30ncyBzZWxlY3Rpb24uXG4gKlxuICogRXZlcnkgZnVuY3Rpb24gaGVyZSBzaGVsbHMgb3V0LCBzbyB0aGUgd2hvbGUgbW9kdWxlIGlzIGludGVncmF0aW9uLXRpbWUgY29kZVxuICogXHUyMDE0IHdoaWNoIGlzIGV4YWN0bHkgd2h5IHRoZSBzZWxlY3Rpb24gaXQgZGVsZWdhdGVzIHRvIGxpdmVzIGluIGl0cyBvd24gbW9kdWxlXG4gKiBhbmQgc3RheXMgdW5pdC10ZXN0ZWQuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVncmF0aW9uLXRpbWUgY29kZSAoc2hlbGxzIG91dCB0byBhIHJlYWwgZGV2aWNlKSBjb3ZlcmVkIGJ5IGludGVncmF0aW9uIHRlc3RzLCBub3QgdW5pdCB0ZXN0cy4gKi9cblxuaW1wb3J0IHR5cGUgeyBFbXVsYXRvckRldmljZUNhbmRpZGF0ZSB9IGZyb20gJy4vZW11bGF0b3ItZGV2aWNlLWlkLm1qcyc7XG5cbmltcG9ydCB7IGxpc3RPbmxpbmVEZXZpY2VJZHMgfSBmcm9tICcuL2FkYi1kZXZpY2UtbGlzdC5tanMnO1xuaW1wb3J0IHtcbiAgcnVuQWRiVGV4dCxcbiAgcnVuQWRiVGV4dFdpdGhvdXREZXZpY2Vcbn0gZnJvbSAnLi9hZGIubWpzJztcbmltcG9ydCB7IHNlbGVjdEVtdWxhdG9yRGV2aWNlSWQgfSBmcm9tICcuL2VtdWxhdG9yLWRldmljZS1pZC5tanMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlRW11bGF0b3JEZXZpY2VJZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUVtdWxhdG9yRGV2aWNlSWRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIEFWRCBuYW1lIHRvIG1hdGNoLCBlLmcuIGBvYnNpZGlhbl9zY3JlZW5zaG90c2AuXG4gICAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHByZWZpeCBgYWRiIGRldmljZXNgIGdpdmVzIGFuIGVtdWxhdG9yLCBhcyBvcHBvc2VkIHRvIGEgcGh5c2ljYWxseSBhdHRhY2hlZCBkZXZpY2UuXG4gKi9cbmNvbnN0IEVNVUxBVE9SX0RFVklDRV9JRF9QUkVGSVggPSAnZW11bGF0b3ItJztcblxuLyoqXG4gKiBGaW5kcyB0aGUgcnVubmluZyBlbXVsYXRvciB3aG9zZSBBVkQgaXMgdGhlIG5hbWVkIG9uZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIEFWRCB0byBtYXRjaC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRldmljZSBVRElEIHRvIGFkZHJlc3MgaXQgYnkuXG4gKiBAdGhyb3dzIEVycm9yIGlmIG5vIHJ1bm5pbmcgZW11bGF0b3Igd2FzIHN0YXJ0ZWQgZnJvbSB0aGF0IEFWRC4gVGhlIG1lc3NhZ2UgbGlzdHMgd2hhdCBJUyBydW5uaW5nLCBzaW5jZVxuICogICBcInRoZSB3cm9uZyBlbXVsYXRvciBpcyB1cFwiIGFuZCBcIm5vIGVtdWxhdG9yIGlzIHVwXCIgbmVlZCBkaWZmZXJlbnQgYW5zd2Vycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVFbXVsYXRvckRldmljZUlkKHBhcmFtczogUmVzb2x2ZUVtdWxhdG9yRGV2aWNlSWRQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjYW5kaWRhdGVzID0gYXdhaXQgbGlzdEVtdWxhdG9yRGV2aWNlQ2FuZGlkYXRlcygpO1xuICBjb25zdCBkZXZpY2VJZCA9IHNlbGVjdEVtdWxhdG9yRGV2aWNlSWQoeyBhdmROYW1lOiBwYXJhbXMuYXZkTmFtZSwgY2FuZGlkYXRlcyB9KTtcblxuICBpZiAoIWRldmljZUlkKSB7XG4gICAgY29uc3QgbGlzdGVkID0gY2FuZGlkYXRlcy5tYXAoKGNhbmRpZGF0ZSkgPT4gYCR7Y2FuZGlkYXRlLmRldmljZUlkfSAoJHtjYW5kaWRhdGUuYXZkTmFtZX0pYCkuam9pbignLCAnKSB8fCAnbm9uZSc7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHJlc29sdmVFbXVsYXRvckRldmljZUlkOiBubyBydW5uaW5nIGVtdWxhdG9yIGZvciBBVkQgXCIke3BhcmFtcy5hdmROYW1lfVwiLiBSdW5uaW5nIGVtdWxhdG9yczogJHtsaXN0ZWR9LiBgXG4gICAgICAgICsgJ1N0YXJ0IGl0LCBvciBydW4gdGhpcyBwcm9qZWN0IG9uY2UgdG8gaGF2ZSB0aGUgaGFybmVzcyBzdGFydCBpdC4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBkZXZpY2VJZDtcbn1cblxuLyoqXG4gKiBBc2tzIGV2ZXJ5IG9ubGluZSBlbXVsYXRvciB3aGljaCBBVkQgaXQgd2FzIHN0YXJ0ZWQgZnJvbS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIG9uZSBlbnRyeSBwZXIgcnVubmluZyBlbXVsYXRvci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbGlzdEVtdWxhdG9yRGV2aWNlQ2FuZGlkYXRlcygpOiBQcm9taXNlPEVtdWxhdG9yRGV2aWNlQ2FuZGlkYXRlW10+IHtcbiAgY29uc3QgZGV2aWNlc091dHB1dCA9IGF3YWl0IHJ1bkFkYlRleHRXaXRob3V0RGV2aWNlKFsnZGV2aWNlcyddKTtcbiAgY29uc3QgZGV2aWNlSWRzID0gbGlzdE9ubGluZURldmljZUlkcyhkZXZpY2VzT3V0cHV0KS5maWx0ZXIoKGRldmljZUlkKSA9PiBkZXZpY2VJZC5zdGFydHNXaXRoKEVNVUxBVE9SX0RFVklDRV9JRF9QUkVGSVgpKTtcblxuICBjb25zdCBjYW5kaWRhdGVzOiBFbXVsYXRvckRldmljZUNhbmRpZGF0ZVtdID0gW107XG4gIGZvciAoY29uc3QgZGV2aWNlSWQgb2YgZGV2aWNlSWRzKSB7XG4gICAgLy8gYGFkYiBlbXUgYXZkIG5hbWVgIGFuc3dlcnMgd2l0aCB0aGUgbmFtZSBhbmQgdGhlbiBgT0tgLCBlYWNoIG9uIGl0cyBvd24gbGluZS5cbiAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBydW5BZGJUZXh0KHsgY29tbWFuZEFyZ3VtZW50czogWydlbXUnLCAnYXZkJywgJ25hbWUnXSwgZGV2aWNlSWQgfSk7XG4gICAgY29uc3QgYXZkTmFtZSA9IG91dHB1dC5zcGxpdCgnXFxuJywgMSlbMF0/LnRyaW0oKSA/PyAnJztcbiAgICBjYW5kaWRhdGVzLnB1c2goeyBhdmROYW1lLCBkZXZpY2VJZCB9KTtcbiAgfVxuXG4gIHJldHVybiBjYW5kaWRhdGVzO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBZUEsU0FBUywyQkFBMkI7QUFDcEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLDhCQUE4QjtBQWV2QyxNQUFNLDRCQUE0QjtBQVVsQyxlQUFzQix3QkFBd0IsUUFBd0Q7QUFDcEcsUUFBTSxhQUFhLE1BQU0sNkJBQTZCO0FBQ3RELFFBQU0sV0FBVyx1QkFBdUIsRUFBRSxTQUFTLE9BQU8sU0FBUyxXQUFXLENBQUM7QUFFL0UsTUFBSSxDQUFDLFVBQVU7QUFDYixVQUFNLFNBQVMsV0FBVyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsUUFBUSxLQUFLLFVBQVUsT0FBTyxHQUFHLEVBQUUsS0FBSyxJQUFJLEtBQUs7QUFDM0csVUFBTSxJQUFJO0FBQUEsTUFDUix5REFBeUQsT0FBTyxPQUFPLHlCQUF5QixNQUFNO0FBQUEsSUFFeEc7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBT0EsZUFBZSwrQkFBbUU7QUFDaEYsUUFBTSxnQkFBZ0IsTUFBTSx3QkFBd0IsQ0FBQyxTQUFTLENBQUM7QUFDL0QsUUFBTSxZQUFZLG9CQUFvQixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWEsU0FBUyxXQUFXLHlCQUF5QixDQUFDO0FBRXhILFFBQU0sYUFBd0MsQ0FBQztBQUMvQyxhQUFXLFlBQVksV0FBVztBQUVoQyxVQUFNLFNBQVMsTUFBTSxXQUFXLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxPQUFPLE1BQU0sR0FBRyxTQUFTLENBQUM7QUFDdEYsVUFBTSxVQUFVLE9BQU8sTUFBTSxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxLQUFLO0FBQ3BELGVBQVcsS0FBSyxFQUFFLFNBQVMsU0FBUyxDQUFDO0FBQUEsRUFDdkM7QUFFQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
|