wrc-ts 0.1.0 → 0.2.0

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/browser.d.ts CHANGED
@@ -5,8 +5,8 @@ export { BrowserConfig } from "./config.ts";
5
5
  export { Locator, css, js, node, at, AllFrames } from "./locator.ts";
6
6
  export { DefaultWaitTimeoutMs, DefaultVisible, DefaultSteadyMs, } from "./defaults.ts";
7
7
  export { WRCError } from "./errors.ts";
8
- export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, WaitResult, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult, ObservationResult, DOMResult, InspectResult, RentResponse, } from "./types.ts";
9
- export type { Button, ClickAction, ClickOpts, FillOpts, SelectOpts, WaitOpts, WaitUntil, NavigateOpts, LoadHTMLOpts, GetDOMOpts, GetObservationOpts, } from "./options.ts";
8
+ export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, WaitResult, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult, ObservationResult, ScreenshotResult, DOMResult, InspectResult, RentResponse, } from "./types.ts";
9
+ export type { Button, ClickAction, ClickOpts, FillOpts, SelectOpts, WaitOpts, WaitUntil, NavigateOpts, LoadHTMLOpts, GetDOMOpts, GetObservationOpts, ScreenshotOpts, } from "./options.ts";
10
10
  export { type RequestPattern, type HeaderModification, type HeaderModificationAction, } from "./network.ts";
11
11
  export type { CookieParam } from "./cookies.ts";
12
12
  export type { StorageItem, StorageOriginEntry } from "./storage.ts";
package/dist/client.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { Transport } from "@connectrpc/connect";
2
2
  import type { Locator } from "./locator.ts";
3
- import type { DOMResult, DragResult, ElementResult, EvaluateResult, InterceptedRequest, InterceptedResponse, InspectResult, NavigateResult, ObservationResult, PageInfo, SelectOptionResult, WaitResult } from "./types.ts";
4
- import type { ClickOpts, FillOpts, GetDOMOpts, GetObservationOpts, LoadHTMLOpts, NavigateOpts, SelectOpts, WaitOpts } from "./options.ts";
3
+ import type { DOMResult, DragResult, ElementResult, EvaluateResult, InterceptedRequest, InterceptedResponse, InspectResult, NavigateResult, ObservationResult, PageInfo, ScreenshotResult, SelectOptionResult, WaitResult } from "./types.ts";
4
+ import type { ClickOpts, FillOpts, GetDOMOpts, GetObservationOpts, LoadHTMLOpts, NavigateOpts, ScreenshotOpts, SelectOpts, WaitOpts } from "./options.ts";
5
5
  import type { HeaderModification, RequestPattern } from "./network.ts";
6
6
  import type { CookieParam } from "./cookies.ts";
7
7
  import type { StorageOriginEntry } from "./storage.ts";
@@ -474,6 +474,27 @@ export declare class CloudBrowser {
474
474
  * console.log(obs.text);
475
475
  */
476
476
  getObservation(opts?: GetObservationOpts): Promise<ObservationResult>;
477
+ /**
478
+ * Captures a single image of the page's current frame and returns it as
479
+ * base64-encoded image bytes.
480
+ *
481
+ * The capture uses a one-shot surface copy (the same mechanism as CDP
482
+ * Page.captureScreenshot), so it is independent of any active live stream
483
+ * and works with both GPU (hardware) and software compositing.
484
+ *
485
+ * @param opts - optional `format` ("png" default, "jpeg", "webp") and
486
+ * `quality` (0-100, for jpeg/webp only); omit to use the server defaults
487
+ *
488
+ * @returns ScreenshotResult with the base64 image in `dataBase64` and the
489
+ * physical pixel `width`/`height`
490
+ *
491
+ * @throws UNKNOWN_ERROR - the screenshot could not be captured
492
+ *
493
+ * @example
494
+ * const shot = await browser.screenshot({ format: "png" });
495
+ * await fs.writeFile("page.png", Buffer.from(shot.dataBase64, "base64"));
496
+ */
497
+ screenshot(opts?: ScreenshotOpts): Promise<ScreenshotResult>;
477
498
  /**
478
499
  * Replaces the session's URL blocklist.
479
500
  *
package/dist/client.js CHANGED
@@ -2,7 +2,7 @@ import { createClient } from "@connectrpc/connect";
2
2
  import { create } from "@bufbuild/protobuf";
3
3
  import { WRC,
4
4
  // request / response schemas
5
- SetProxyRequestSchema, GetPagesRequestSchema, NavigateRequestSchema, LoadHTMLRequestSchema, EvaluateRequestSchema, WaitForAnyParamsSchema, WaitConditionSchema, ClickRequestSchema, FillRequestSchema, MoveToRequestSchema, ScrollToRequestSchema, DragRequestSchema, SelectOptionRequestSchema, GetDOMRequestSchema, GetDOMHashRequestSchema, GetObservationRequestSchema, SetBlockListRequestSchema, SetStaticPathsRequestSchema, WaitForAnyRequestRequestSchema, WaitForAnyResponseRequestSchema, ModifyRequestRequestSchema, GetCookiesRequestSchema, SetCookiesRequestSchema, ClearCookiesRequestSchema, GetStorageRequestSchema, SetStorageRequestSchema, ClearStorageRequestSchema, InspectAtPositionRequestSchema, HighlightNodeRequestSchema, InsertTextRequestSchema, PressKeyRequestSchema, ReleaseKeyRequestSchema, GetSelectionRequestSchema, SolveCaptchaRequestSchema, } from "./gen/wrc_pb.js";
5
+ SetProxyRequestSchema, GetPagesRequestSchema, NavigateRequestSchema, LoadHTMLRequestSchema, EvaluateRequestSchema, WaitForAnyParamsSchema, WaitConditionSchema, ClickRequestSchema, FillRequestSchema, MoveToRequestSchema, ScrollToRequestSchema, DragRequestSchema, SelectOptionRequestSchema, GetDOMRequestSchema, GetDOMHashRequestSchema, GetObservationRequestSchema, ScreenshotRequestSchema, SetBlockListRequestSchema, SetStaticPathsRequestSchema, WaitForAnyRequestRequestSchema, WaitForAnyResponseRequestSchema, ModifyRequestRequestSchema, GetCookiesRequestSchema, SetCookiesRequestSchema, ClearCookiesRequestSchema, GetStorageRequestSchema, SetStorageRequestSchema, ClearStorageRequestSchema, InspectAtPositionRequestSchema, HighlightNodeRequestSchema, InsertTextRequestSchema, PressKeyRequestSchema, ReleaseKeyRequestSchema, GetSelectionRequestSchema, SolveCaptchaRequestSchema, } from "./gen/wrc_pb.js";
6
6
  import { DefaultWaitTimeoutMs } from "./defaults.js";
7
7
  import { WRCError } from "./errors.js";
8
8
  import { cookieParamFromProto, cookieParamsToProto, dragResultFromProto, elementFields, elementResultFromProto, headerModsToProto, headersToProto, interceptedRequestFromProto, interceptedResponseFromProto, pageInfoFromProto, rectFromProto, splitRequestPatterns, storageEntriesToProto, storageEntryFromProto, waitResultFromProto, } from "./internal/convert.js";
@@ -736,6 +736,42 @@ export class CloudBrowser {
736
736
  const resp = await this.client.getObservation(req);
737
737
  return { text: resp.observationText, json: resp.observationJson };
738
738
  }
739
+ /**
740
+ * Captures a single image of the page's current frame and returns it as
741
+ * base64-encoded image bytes.
742
+ *
743
+ * The capture uses a one-shot surface copy (the same mechanism as CDP
744
+ * Page.captureScreenshot), so it is independent of any active live stream
745
+ * and works with both GPU (hardware) and software compositing.
746
+ *
747
+ * @param opts - optional `format` ("png" default, "jpeg", "webp") and
748
+ * `quality` (0-100, for jpeg/webp only); omit to use the server defaults
749
+ *
750
+ * @returns ScreenshotResult with the base64 image in `dataBase64` and the
751
+ * physical pixel `width`/`height`
752
+ *
753
+ * @throws UNKNOWN_ERROR - the screenshot could not be captured
754
+ *
755
+ * @example
756
+ * const shot = await browser.screenshot({ format: "png" });
757
+ * await fs.writeFile("page.png", Buffer.from(shot.dataBase64, "base64"));
758
+ */
759
+ async screenshot(opts) {
760
+ const req = create(ScreenshotRequestSchema, {
761
+ sessionId: this.sessionId,
762
+ apiKey: this.apiKey,
763
+ });
764
+ if (opts?.format !== undefined)
765
+ req.format = opts.format;
766
+ if (opts?.quality !== undefined)
767
+ req.quality = opts.quality;
768
+ const resp = await this.client.screenshot(req);
769
+ return {
770
+ dataBase64: resp.dataBase64,
771
+ width: resp.width,
772
+ height: resp.height,
773
+ };
774
+ }
739
775
  // ──────────────────────────────────────────────────────────────────
740
776
  // Network interception
741
777
  // ──────────────────────────────────────────────────────────────────
@@ -1848,6 +1848,73 @@ export type GetSelectionResponse = Message<"wrc.v2.GetSelectionResponse"> & {
1848
1848
  * Use `create(GetSelectionResponseSchema)` to create a new message.
1849
1849
  */
1850
1850
  export declare const GetSelectionResponseSchema: GenMessage<GetSelectionResponse>;
1851
+ /**
1852
+ * Screenshot captures a single image of the page's current frame. The server
1853
+ * uses a one-shot surface copy (the same mechanism as CDP
1854
+ * Page.captureScreenshot), independent of any active WRC.startStream video
1855
+ * stream, and works with both GPU (hardware) and software compositing.
1856
+ *
1857
+ * @generated from message wrc.v2.ScreenshotRequest
1858
+ */
1859
+ export type ScreenshotRequest = Message<"wrc.v2.ScreenshotRequest"> & {
1860
+ /**
1861
+ * @generated from field: string session_id = 1;
1862
+ */
1863
+ sessionId: string;
1864
+ /**
1865
+ * @generated from field: string api_key = 2;
1866
+ */
1867
+ apiKey: string;
1868
+ /**
1869
+ * @generated from field: string page_id = 3;
1870
+ */
1871
+ pageId: string;
1872
+ /**
1873
+ * Image format: "png" (default), "jpeg", or "webp".
1874
+ *
1875
+ * @generated from field: optional string format = 4;
1876
+ */
1877
+ format?: string;
1878
+ /**
1879
+ * Encode quality 0-100 for "jpeg"/"webp" (ignored for "png"). Default 90.
1880
+ *
1881
+ * @generated from field: optional int32 quality = 5;
1882
+ */
1883
+ quality?: number;
1884
+ };
1885
+ /**
1886
+ * Describes the message wrc.v2.ScreenshotRequest.
1887
+ * Use `create(ScreenshotRequestSchema)` to create a new message.
1888
+ */
1889
+ export declare const ScreenshotRequestSchema: GenMessage<ScreenshotRequest>;
1890
+ /**
1891
+ * @generated from message wrc.v2.ScreenshotResponse
1892
+ */
1893
+ export type ScreenshotResponse = Message<"wrc.v2.ScreenshotResponse"> & {
1894
+ /**
1895
+ * Encoded image bytes as base64 (PNG by default).
1896
+ *
1897
+ * @generated from field: string data_base64 = 1;
1898
+ */
1899
+ dataBase64: string;
1900
+ /**
1901
+ * Image width in physical pixels.
1902
+ *
1903
+ * @generated from field: int32 width = 2;
1904
+ */
1905
+ width: number;
1906
+ /**
1907
+ * Image height in physical pixels.
1908
+ *
1909
+ * @generated from field: int32 height = 3;
1910
+ */
1911
+ height: number;
1912
+ };
1913
+ /**
1914
+ * Describes the message wrc.v2.ScreenshotResponse.
1915
+ * Use `create(ScreenshotResponseSchema)` to create a new message.
1916
+ */
1917
+ export declare const ScreenshotResponseSchema: GenMessage<ScreenshotResponse>;
1851
1918
  /**
1852
1919
  * @generated from message wrc.v2.SolveCaptchaRequest
1853
1920
  */
@@ -2142,6 +2209,16 @@ export declare const WRC: GenService<{
2142
2209
  input: typeof HighlightNodeRequestSchema;
2143
2210
  output: typeof EmptySchema;
2144
2211
  };
2212
+ /**
2213
+ * Screenshot / capture
2214
+ *
2215
+ * @generated from rpc wrc.v2.WRC.Screenshot
2216
+ */
2217
+ screenshot: {
2218
+ methodKind: "unary";
2219
+ input: typeof ScreenshotRequestSchema;
2220
+ output: typeof ScreenshotResponseSchema;
2221
+ };
2145
2222
  /**
2146
2223
  * Keyboard / IME (used by the live browser UI on top of the WebRTC stream)
2147
2224
  *
@@ -6,7 +6,7 @@ import { file_google_protobuf_empty } from "@bufbuild/protobuf/wkt";
6
6
  /**
7
7
  * Describes the file wrc.proto.
8
8
  */
9
- export const file_wrc = /*@__PURE__*/ fileDesc("Cgl3cmMucHJvdG8SBndyYy52MiI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEi6wEKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiMKDWFic29sdXRlX3JlY3QYByABKAsyDC53cmMudjIuUmVjdBIjCg1yZWxhdGl2ZV9yZWN0GAggASgLMgwud3JjLnYyLlJlY3QSIwoIY2hpbGRyZW4YCSADKAsyES53cmMudjIuRnJhbWVJbmZvIpoBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSHgoIdmlld3BvcnQYBSABKAsyDC53cmMudjIuUmVjdBIlCgpmcmFtZV90cmVlGAYgASgLMhEud3JjLnYyLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSJ3ChJJbnRlcmNlcHRlZFJlcXVlc3QSDgoGbWV0aG9kGAEgASgJEgsKA3VybBgCIAEoCRIfCgdoZWFkZXJzGAMgAygLMg4ud3JjLnYyLkhlYWRlchIMCgRib2R5GAQgASgJEhUKDXJlc291cmNlX3R5cGUYBSABKAkiZgoTSW50ZXJjZXB0ZWRSZXNwb25zZRILCgN1cmwYASABKAkSEwoLc3RhdHVzX2NvZGUYAiABKAUSHwoHaGVhZGVycxgDIAMoCzIOLndyYy52Mi5IZWFkZXISDAoEYm9keRgEIAEoCSKOAQoSSGVhZGVyTW9kaWZpY2F0aW9uEgwKBG5hbWUYASABKAkSEgoFdmFsdWUYAiABKAlIAIgBARIOCgZhY3Rpb24YAyABKAkSEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFYWZ0ZXIYBSABKAlIAogBAUIICgZfdmFsdWVCCQoHX2JlZm9yZUIICgZfYWZ0ZXIiTQoSQ29va2llUGFydGl0aW9uS2V5EhYKDnRvcF9sZXZlbF9zaXRlGAEgASgJEh8KF2hhc19jcm9zc19zaXRlX2FuY2VzdG9yGAIgASgIIrYDCgtDb29raWVQYXJhbRIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJEhAKA3VybBgDIAEoCUgAiAEBEg4KBmRvbWFpbhgEIAEoCRIMCgRwYXRoGAUgASgJEhMKBnNlY3VyZRgGIAEoCEgBiAEBEhYKCWh0dHBfb25seRgHIAEoCEgCiAEBEhYKCXNhbWVfc2l0ZRgIIAEoCUgDiAEBEhQKB2V4cGlyZXMYCSABKAFIBIgBARIVCghwcmlvcml0eRgKIAEoCUgFiAEBEhoKDXNvdXJjZV9zY2hlbWUYCyABKAlIBogBARIYCgtzb3VyY2VfcG9ydBgMIAEoBUgHiAEBEjYKDXBhcnRpdGlvbl9rZXkYDSABKAsyGi53cmMudjIuQ29va2llUGFydGl0aW9uS2V5SAiIAQFCBgoEX3VybEIJCgdfc2VjdXJlQgwKCl9odHRwX29ubHlCDAoKX3NhbWVfc2l0ZUIKCghfZXhwaXJlc0ILCglfcHJpb3JpdHlCEAoOX3NvdXJjZV9zY2hlbWVCDgoMX3NvdXJjZV9wb3J0QhAKDl9wYXJ0aXRpb25fa2V5Iq0BCg1XYWl0Q29uZGl0aW9uEhUKCHNlbGVjdG9yGAEgASgJSACIAQESGgoNanNfZXhwcmVzc2lvbhgCIAEoCUgBiAEBEhQKB3Zpc2libGUYAyABKAhIAogBARIYCgtzdGVhZHlfdGltZRgEIAEoAUgDiAEBQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkIKCghfdmlzaWJsZUIOCgxfc3RlYWR5X3RpbWUieAoKV2FpdFJlc3VsdBINCgVpbmRleBgBIAEoBRIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIcCgZib3VuZHMYBSABKAsyDC53cmMudjIuUmVjdCKdAQoNRWxlbWVudFJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEhwKBmJvdW5kcxgFIAEoCzIMLndyYy52Mi5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAEiiAEKCkRyYWdSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDwoHc3RhcnRfeBgEIAEoARIPCgdzdGFydF95GAUgASgBEg0KBWVuZF94GAYgASgBEg0KBWVuZF95GAcgASgBIlsKElNlbGVjdE9wdGlvblJlc3VsdBIWCg5zZWxlY3RlZF9pbmRleBgBIAEoBRIWCg5zZWxlY3RlZF92YWx1ZRgCIAEoCRIVCg1zZWxlY3RlZF90ZXh0GAMgASgJIuYBCg9TZXRQcm94eVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKCnByb3h5X2hvc3QYAyABKAlIAIgBARIXCgpwcm94eV9wb3J0GAQgASgFSAGIAQESGwoOcHJveHlfdXNlcm5hbWUYBSABKAlIAogBARIbCg5wcm94eV9wYXNzd29yZBgGIAEoCUgDiAEBQg0KC19wcm94eV9ob3N0Qg0KC19wcm94eV9wb3J0QhEKD19wcm94eV91c2VybmFtZUIRCg9fcHJveHlfcGFzc3dvcmQiNgoPR2V0UGFnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIzChBHZXRQYWdlc1Jlc3BvbnNlEh8KBXBhZ2VzGAEgAygLMhAud3JjLnYyLlBhZ2VJbmZvIpoBCg9OYXZpZ2F0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDdXJsGAQgASgJEhUKCHJlZmVycmVyGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9yZWZlcnJlckIKCghfdGltZW91dCIxChBOYXZpZ2F0ZVJlc3BvbnNlEhAKCGZyYW1lX2lkGAEgASgJEgsKA3VybBgCIAEoCSKtAQoPTG9hZEhUTUxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIMCgRodG1sGAUgASgJEh8KB2hlYWRlcnMYBiADKAsyDi53cmMudjIuSGVhZGVyEhgKC3N0YXR1c19jb2RlGAcgASgFSACIAQFCDgoMX3N0YXR1c19jb2RlIn8KD0V2YWx1YXRlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRISCgpleHByZXNzaW9uGAQgASgJEhUKCGZyYW1lX2lkGAUgASgJSACIAQFCCwoJX2ZyYW1lX2lkIm0KEEV2YWx1YXRlUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgCIAEoBRISCgppc192aXNpYmxlGAMgASgIEhwKBmJvdW5kcxgEIAEoCzIMLndyYy52Mi5SZWN0IrkBChBXYWl0Rm9yQW55UGFyYW1zEhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEikKCmNvbmRpdGlvbnMYBCADKAsyFS53cmMudjIuV2FpdENvbmRpdGlvbhIVCghmcmFtZV9pZBgFIAEoCUgAiAEBEhQKB3RpbWVvdXQYBiABKAFIAYgBAUILCglfZnJhbWVfaWRCCgoIX3RpbWVvdXQi9QIKE1NlbGVjdE9wdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARISCgVpbmRleBgIIAEoBUgEiAEBEhIKBXZhbHVlGAkgASgJSAWIAQESEQoEdGV4dBgKIAEoCUgGiAEBEhgKC2ZpcmVfZXZlbnRzGAsgASgISAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQggKBl9pbmRleEIICgZfdmFsdWVCBwoFX3RleHRCDgoMX2ZpcmVfZXZlbnRzIu8BCg9TY3JvbGxUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWQimQIKDU1vdmVUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARIOCgF4GAggASgBSASIAQESDgoBeRgJIAEoAUgFiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIECgJfeEIECgJfeSKCAwoMQ2xpY2tSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESEwoGYnV0dG9uGAggASgJSASIAQESGAoLY2xpY2tfY291bnQYCSABKAVIBYgBARIOCgF4GAogASgBSAaIAQESDgoBeRgLIAEoAUgHiAEBEhMKBmFjdGlvbhgMIAEoCUgIiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIJCgdfYnV0dG9uQg4KDF9jbGlja19jb3VudEIECgJfeEIECgJfeUIJCgdfYWN0aW9uIoMDCgtEcmFnUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhUKCG9mZnNldF94GAggASgBSASIAQESFQoIb2Zmc2V0X3kYCSABKAFIBYgBARIXCgphYnNvbHV0ZV94GAogASgBSAaIAQESFwoKYWJzb2x1dGVfeRgLIAEoAUgHiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEILCglfb2Zmc2V0X3hCCwoJX29mZnNldF95Qg0KC19hYnNvbHV0ZV94Qg0KC19hYnNvbHV0ZV95IqMCCgtGaWxsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEgwKBHRleHQYCCABKAkSGAoLY2xlYXJfZmlyc3QYCSABKAhIBIgBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCDgoMX2NsZWFyX2ZpcnN0IkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCJXChlXYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlEg0KBWluZGV4GAEgASgFEisKB3JlcXVlc3QYAiABKAsyGi53cmMudjIuSW50ZXJjZXB0ZWRSZXF1ZXN0IokBChlXYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCRITCgthYm9ydF9mbGFncxgEIAMoBRIUCgd0aW1lb3V0GAUgASgBSACIAQFCCgoIX3RpbWVvdXQiWgoaV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USDQoFaW5kZXgYASABKAUSLQoIcmVzcG9uc2UYAiABKAsyGy53cmMudjIuSW50ZXJjZXB0ZWRSZXNwb25zZSLBAQoUTW9kaWZ5UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhMKC3VybF9wYXR0ZXJuGAMgASgJEjEKDW1vZGlmaWNhdGlvbnMYBCADKAsyGi53cmMudjIuSGVhZGVyTW9kaWZpY2F0aW9uEhEKBGJvZHkYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCBwoFX2JvZHlCCgoIX3RpbWVvdXQiRAoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEisKB3JlcXVlc3QYASABKAsyGi53cmMudjIuSW50ZXJjZXB0ZWRSZXF1ZXN0IjgKEUdldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSI6ChJHZXRDb29raWVzUmVzcG9uc2USJAoHY29va2llcxgBIAMoCzITLndyYy52Mi5Db29raWVQYXJhbSJeChFTZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSJAoHY29va2llcxgDIAMoCzITLndyYy52Mi5Db29raWVQYXJhbSI6ChNDbGVhckNvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIpCgtTdG9yYWdlSXRlbRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiSAoSU3RvcmFnZU9yaWdpbkVudHJ5Eg4KBm9yaWdpbhgBIAEoCRIiCgVpdGVtcxgCIAMoCzITLndyYy52Mi5TdG9yYWdlSXRlbSJYChFHZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiJBChJHZXRTdG9yYWdlUmVzcG9uc2USKwoHc3RvcmFnZRgBIAMoCzIaLndyYy52Mi5TdG9yYWdlT3JpZ2luRW50cnkijwEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIrCgdzdG9yYWdlGAMgAygLMhoud3JjLnYyLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIocBCg1HZXRET01SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIh0KDkdldERPTVJlc3BvbnNlEgsKA2RvbRgBIAEoCSK/AQoVR2V0T2JzZXJ2YXRpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEiMKFm1heF9lbGVtZW50c19wZXJfZnJhbWUYBCABKAVIAIgBARIcCg9tYXhfdGV4dF9sZW5ndGgYBSABKAVIAYgBAUIZChdfbWF4X2VsZW1lbnRzX3Blcl9mcmFtZUISChBfbWF4X3RleHRfbGVuZ3RoIkwKFkdldE9ic2VydmF0aW9uUmVzcG9uc2USGAoQb2JzZXJ2YXRpb25fdGV4dBgBIAEoCRIYChBvYnNlcnZhdGlvbl9qc29uGAIgASgJIm0KEUdldERPTUhhc2hSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIiIKEkdldERPTUhhc2hSZXNwb25zZRIMCgRoYXNoGAEgASgJImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEioAEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEhwKBmJvdW5kcxgGIAEoCzIMLndyYy52Mi5SZWN0IokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSK6AQoPUHJlc3NLZXlSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA2tleRgEIAEoCRIRCgRjb2RlGAUgASgJSACIAQESFgoJbW9kaWZpZXJzGAYgASgFSAGIAQESFQoIbG9jYXRpb24YByABKAVIAogBAUIHCgVfY29kZUIMCgpfbW9kaWZpZXJzQgsKCV9sb2NhdGlvbiK8AQoRUmVsZWFzZUtleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIksKE0dldFNlbGVjdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkiJAoUR2V0U2VsZWN0aW9uUmVzcG9uc2USDAoEdGV4dBgBIAEoCSJkChNTb2x2ZUNhcHRjaGFSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRISCgp0aW1lb3V0X21zGAMgASgFEhQKDHJldHJ5X2Ftb3VudBgEIAEoBSImChRTb2x2ZUNhcHRjaGFSZXNwb25zZRIOCgZyZXN1bHQYASABKAkyvhEKA1dSQxI7CghTZXRQcm94eRIXLndyYy52Mi5TZXRQcm94eVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSPQoIR2V0UGFnZXMSFy53cmMudjIuR2V0UGFnZXNSZXF1ZXN0Ghgud3JjLnYyLkdldFBhZ2VzUmVzcG9uc2USPQoITmF2aWdhdGUSFy53cmMudjIuTmF2aWdhdGVSZXF1ZXN0Ghgud3JjLnYyLk5hdmlnYXRlUmVzcG9uc2USOwoITG9hZEhUTUwSFy53cmMudjIuTG9hZEhUTUxSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej0KCEV2YWx1YXRlEhcud3JjLnYyLkV2YWx1YXRlUmVxdWVzdBoYLndyYy52Mi5FdmFsdWF0ZVJlc3BvbnNlEjoKCldhaXRGb3JBbnkSGC53cmMudjIuV2FpdEZvckFueVBhcmFtcxoSLndyYy52Mi5XYWl0UmVzdWx0EkcKDFNlbGVjdE9wdGlvbhIbLndyYy52Mi5TZWxlY3RPcHRpb25SZXF1ZXN0Ghoud3JjLnYyLlNlbGVjdE9wdGlvblJlc3VsdBI6CghTY3JvbGxUbxIXLndyYy52Mi5TY3JvbGxUb1JlcXVlc3QaFS53cmMudjIuRWxlbWVudFJlc3VsdBI2CgZNb3ZlVG8SFS53cmMudjIuTW92ZVRvUmVxdWVzdBoVLndyYy52Mi5FbGVtZW50UmVzdWx0EjQKBUNsaWNrEhQud3JjLnYyLkNsaWNrUmVxdWVzdBoVLndyYy52Mi5FbGVtZW50UmVzdWx0Ei8KBERyYWcSEy53cmMudjIuRHJhZ1JlcXVlc3QaEi53cmMudjIuRHJhZ1Jlc3VsdBIyCgRGaWxsEhMud3JjLnYyLkZpbGxSZXF1ZXN0GhUud3JjLnYyLkVsZW1lbnRSZXN1bHQSQwoMU2V0QmxvY2tMaXN0Ehsud3JjLnYyLlNldEJsb2NrTGlzdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRwoOU2V0U3RhdGljUGF0aHMSHS53cmMudjIuU2V0U3RhdGljUGF0aHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElgKEVdhaXRGb3JBbnlSZXF1ZXN0EiAud3JjLnYyLldhaXRGb3JBbnlSZXF1ZXN0UmVxdWVzdBohLndyYy52Mi5XYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlElsKEldhaXRGb3JBbnlSZXNwb25zZRIhLndyYy52Mi5XYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0GiIud3JjLnYyLldhaXRGb3JBbnlSZXNwb25zZVJlc3BvbnNlEkwKDU1vZGlmeVJlcXVlc3QSHC53cmMudjIuTW9kaWZ5UmVxdWVzdFJlcXVlc3QaHS53cmMudjIuTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEkMKCkdldENvb2tpZXMSGS53cmMudjIuR2V0Q29va2llc1JlcXVlc3QaGi53cmMudjIuR2V0Q29va2llc1Jlc3BvbnNlEj8KClNldENvb2tpZXMSGS53cmMudjIuU2V0Q29va2llc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSQwoMQ2xlYXJDb29raWVzEhsud3JjLnYyLkNsZWFyQ29va2llc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSQwoKR2V0U3RvcmFnZRIZLndyYy52Mi5HZXRTdG9yYWdlUmVxdWVzdBoaLndyYy52Mi5HZXRTdG9yYWdlUmVzcG9uc2USPwoKU2V0U3RvcmFnZRIZLndyYy52Mi5TZXRTdG9yYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJDCgxDbGVhclN0b3JhZ2USGy53cmMudjIuQ2xlYXJTdG9yYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRI3CgZHZXRET00SFS53cmMudjIuR2V0RE9NUmVxdWVzdBoWLndyYy52Mi5HZXRET01SZXNwb25zZRJDCgpHZXRET01IYXNoEhkud3JjLnYyLkdldERPTUhhc2hSZXF1ZXN0Ghoud3JjLnYyLkdldERPTUhhc2hSZXNwb25zZRJPCg5HZXRPYnNlcnZhdGlvbhIdLndyYy52Mi5HZXRPYnNlcnZhdGlvblJlcXVlc3QaHi53cmMudjIuR2V0T2JzZXJ2YXRpb25SZXNwb25zZRJYChFJbnNwZWN0QXRQb3NpdGlvbhIgLndyYy52Mi5JbnNwZWN0QXRQb3NpdGlvblJlcXVlc3QaIS53cmMudjIuSW5zcGVjdEF0UG9zaXRpb25SZXNwb25zZRJFCg1IaWdobGlnaHROb2RlEhwud3JjLnYyLkhpZ2hsaWdodE5vZGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej8KCkluc2VydFRleHQSGS53cmMudjIuSW5zZXJ0VGV4dFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSOwoIUHJlc3NLZXkSFy53cmMudjIuUHJlc3NLZXlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej8KClJlbGVhc2VLZXkSGS53cmMudjIuUmVsZWFzZUtleVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSSQoMR2V0U2VsZWN0aW9uEhsud3JjLnYyLkdldFNlbGVjdGlvblJlcXVlc3QaHC53cmMudjIuR2V0U2VsZWN0aW9uUmVzcG9uc2USSQoMU29sdmVDYXB0Y2hhEhsud3JjLnYyLlNvbHZlQ2FwdGNoYVJlcXVlc3QaHC53cmMudjIuU29sdmVDYXB0Y2hhUmVzcG9uc2VCKlooZ2l0aHViLmNvbS93ZWJyb2JvdC1kZXYvd3JjX2dvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
9
+ export const file_wrc = /*@__PURE__*/ fileDesc("Cgl3cmMucHJvdG8SBndyYy52MiI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEi6wEKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiMKDWFic29sdXRlX3JlY3QYByABKAsyDC53cmMudjIuUmVjdBIjCg1yZWxhdGl2ZV9yZWN0GAggASgLMgwud3JjLnYyLlJlY3QSIwoIY2hpbGRyZW4YCSADKAsyES53cmMudjIuRnJhbWVJbmZvIpoBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSHgoIdmlld3BvcnQYBSABKAsyDC53cmMudjIuUmVjdBIlCgpmcmFtZV90cmVlGAYgASgLMhEud3JjLnYyLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSJ3ChJJbnRlcmNlcHRlZFJlcXVlc3QSDgoGbWV0aG9kGAEgASgJEgsKA3VybBgCIAEoCRIfCgdoZWFkZXJzGAMgAygLMg4ud3JjLnYyLkhlYWRlchIMCgRib2R5GAQgASgJEhUKDXJlc291cmNlX3R5cGUYBSABKAkiZgoTSW50ZXJjZXB0ZWRSZXNwb25zZRILCgN1cmwYASABKAkSEwoLc3RhdHVzX2NvZGUYAiABKAUSHwoHaGVhZGVycxgDIAMoCzIOLndyYy52Mi5IZWFkZXISDAoEYm9keRgEIAEoCSKOAQoSSGVhZGVyTW9kaWZpY2F0aW9uEgwKBG5hbWUYASABKAkSEgoFdmFsdWUYAiABKAlIAIgBARIOCgZhY3Rpb24YAyABKAkSEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFYWZ0ZXIYBSABKAlIAogBAUIICgZfdmFsdWVCCQoHX2JlZm9yZUIICgZfYWZ0ZXIiTQoSQ29va2llUGFydGl0aW9uS2V5EhYKDnRvcF9sZXZlbF9zaXRlGAEgASgJEh8KF2hhc19jcm9zc19zaXRlX2FuY2VzdG9yGAIgASgIIrYDCgtDb29raWVQYXJhbRIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJEhAKA3VybBgDIAEoCUgAiAEBEg4KBmRvbWFpbhgEIAEoCRIMCgRwYXRoGAUgASgJEhMKBnNlY3VyZRgGIAEoCEgBiAEBEhYKCWh0dHBfb25seRgHIAEoCEgCiAEBEhYKCXNhbWVfc2l0ZRgIIAEoCUgDiAEBEhQKB2V4cGlyZXMYCSABKAFIBIgBARIVCghwcmlvcml0eRgKIAEoCUgFiAEBEhoKDXNvdXJjZV9zY2hlbWUYCyABKAlIBogBARIYCgtzb3VyY2VfcG9ydBgMIAEoBUgHiAEBEjYKDXBhcnRpdGlvbl9rZXkYDSABKAsyGi53cmMudjIuQ29va2llUGFydGl0aW9uS2V5SAiIAQFCBgoEX3VybEIJCgdfc2VjdXJlQgwKCl9odHRwX29ubHlCDAoKX3NhbWVfc2l0ZUIKCghfZXhwaXJlc0ILCglfcHJpb3JpdHlCEAoOX3NvdXJjZV9zY2hlbWVCDgoMX3NvdXJjZV9wb3J0QhAKDl9wYXJ0aXRpb25fa2V5Iq0BCg1XYWl0Q29uZGl0aW9uEhUKCHNlbGVjdG9yGAEgASgJSACIAQESGgoNanNfZXhwcmVzc2lvbhgCIAEoCUgBiAEBEhQKB3Zpc2libGUYAyABKAhIAogBARIYCgtzdGVhZHlfdGltZRgEIAEoAUgDiAEBQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkIKCghfdmlzaWJsZUIOCgxfc3RlYWR5X3RpbWUieAoKV2FpdFJlc3VsdBINCgVpbmRleBgBIAEoBRIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIcCgZib3VuZHMYBSABKAsyDC53cmMudjIuUmVjdCKdAQoNRWxlbWVudFJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEhwKBmJvdW5kcxgFIAEoCzIMLndyYy52Mi5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAEiiAEKCkRyYWdSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDwoHc3RhcnRfeBgEIAEoARIPCgdzdGFydF95GAUgASgBEg0KBWVuZF94GAYgASgBEg0KBWVuZF95GAcgASgBIlsKElNlbGVjdE9wdGlvblJlc3VsdBIWCg5zZWxlY3RlZF9pbmRleBgBIAEoBRIWCg5zZWxlY3RlZF92YWx1ZRgCIAEoCRIVCg1zZWxlY3RlZF90ZXh0GAMgASgJIuYBCg9TZXRQcm94eVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKCnByb3h5X2hvc3QYAyABKAlIAIgBARIXCgpwcm94eV9wb3J0GAQgASgFSAGIAQESGwoOcHJveHlfdXNlcm5hbWUYBSABKAlIAogBARIbCg5wcm94eV9wYXNzd29yZBgGIAEoCUgDiAEBQg0KC19wcm94eV9ob3N0Qg0KC19wcm94eV9wb3J0QhEKD19wcm94eV91c2VybmFtZUIRCg9fcHJveHlfcGFzc3dvcmQiNgoPR2V0UGFnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIzChBHZXRQYWdlc1Jlc3BvbnNlEh8KBXBhZ2VzGAEgAygLMhAud3JjLnYyLlBhZ2VJbmZvIpoBCg9OYXZpZ2F0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDdXJsGAQgASgJEhUKCHJlZmVycmVyGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9yZWZlcnJlckIKCghfdGltZW91dCIxChBOYXZpZ2F0ZVJlc3BvbnNlEhAKCGZyYW1lX2lkGAEgASgJEgsKA3VybBgCIAEoCSKtAQoPTG9hZEhUTUxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIMCgRodG1sGAUgASgJEh8KB2hlYWRlcnMYBiADKAsyDi53cmMudjIuSGVhZGVyEhgKC3N0YXR1c19jb2RlGAcgASgFSACIAQFCDgoMX3N0YXR1c19jb2RlIn8KD0V2YWx1YXRlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRISCgpleHByZXNzaW9uGAQgASgJEhUKCGZyYW1lX2lkGAUgASgJSACIAQFCCwoJX2ZyYW1lX2lkIm0KEEV2YWx1YXRlUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgCIAEoBRISCgppc192aXNpYmxlGAMgASgIEhwKBmJvdW5kcxgEIAEoCzIMLndyYy52Mi5SZWN0IrkBChBXYWl0Rm9yQW55UGFyYW1zEhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEikKCmNvbmRpdGlvbnMYBCADKAsyFS53cmMudjIuV2FpdENvbmRpdGlvbhIVCghmcmFtZV9pZBgFIAEoCUgAiAEBEhQKB3RpbWVvdXQYBiABKAFIAYgBAUILCglfZnJhbWVfaWRCCgoIX3RpbWVvdXQi9QIKE1NlbGVjdE9wdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARISCgVpbmRleBgIIAEoBUgEiAEBEhIKBXZhbHVlGAkgASgJSAWIAQESEQoEdGV4dBgKIAEoCUgGiAEBEhgKC2ZpcmVfZXZlbnRzGAsgASgISAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQggKBl9pbmRleEIICgZfdmFsdWVCBwoFX3RleHRCDgoMX2ZpcmVfZXZlbnRzIu8BCg9TY3JvbGxUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWQimQIKDU1vdmVUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARIOCgF4GAggASgBSASIAQESDgoBeRgJIAEoAUgFiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIECgJfeEIECgJfeSKCAwoMQ2xpY2tSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESEwoGYnV0dG9uGAggASgJSASIAQESGAoLY2xpY2tfY291bnQYCSABKAVIBYgBARIOCgF4GAogASgBSAaIAQESDgoBeRgLIAEoAUgHiAEBEhMKBmFjdGlvbhgMIAEoCUgIiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIJCgdfYnV0dG9uQg4KDF9jbGlja19jb3VudEIECgJfeEIECgJfeUIJCgdfYWN0aW9uIoMDCgtEcmFnUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhUKCG9mZnNldF94GAggASgBSASIAQESFQoIb2Zmc2V0X3kYCSABKAFIBYgBARIXCgphYnNvbHV0ZV94GAogASgBSAaIAQESFwoKYWJzb2x1dGVfeRgLIAEoAUgHiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEILCglfb2Zmc2V0X3hCCwoJX29mZnNldF95Qg0KC19hYnNvbHV0ZV94Qg0KC19hYnNvbHV0ZV95IqMCCgtGaWxsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEgwKBHRleHQYCCABKAkSGAoLY2xlYXJfZmlyc3QYCSABKAhIBIgBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCDgoMX2NsZWFyX2ZpcnN0IkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCJXChlXYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlEg0KBWluZGV4GAEgASgFEisKB3JlcXVlc3QYAiABKAsyGi53cmMudjIuSW50ZXJjZXB0ZWRSZXF1ZXN0IokBChlXYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCRITCgthYm9ydF9mbGFncxgEIAMoBRIUCgd0aW1lb3V0GAUgASgBSACIAQFCCgoIX3RpbWVvdXQiWgoaV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USDQoFaW5kZXgYASABKAUSLQoIcmVzcG9uc2UYAiABKAsyGy53cmMudjIuSW50ZXJjZXB0ZWRSZXNwb25zZSLBAQoUTW9kaWZ5UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhMKC3VybF9wYXR0ZXJuGAMgASgJEjEKDW1vZGlmaWNhdGlvbnMYBCADKAsyGi53cmMudjIuSGVhZGVyTW9kaWZpY2F0aW9uEhEKBGJvZHkYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCBwoFX2JvZHlCCgoIX3RpbWVvdXQiRAoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEisKB3JlcXVlc3QYASABKAsyGi53cmMudjIuSW50ZXJjZXB0ZWRSZXF1ZXN0IjgKEUdldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSI6ChJHZXRDb29raWVzUmVzcG9uc2USJAoHY29va2llcxgBIAMoCzITLndyYy52Mi5Db29raWVQYXJhbSJeChFTZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSJAoHY29va2llcxgDIAMoCzITLndyYy52Mi5Db29raWVQYXJhbSI6ChNDbGVhckNvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIpCgtTdG9yYWdlSXRlbRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiSAoSU3RvcmFnZU9yaWdpbkVudHJ5Eg4KBm9yaWdpbhgBIAEoCRIiCgVpdGVtcxgCIAMoCzITLndyYy52Mi5TdG9yYWdlSXRlbSJYChFHZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiJBChJHZXRTdG9yYWdlUmVzcG9uc2USKwoHc3RvcmFnZRgBIAMoCzIaLndyYy52Mi5TdG9yYWdlT3JpZ2luRW50cnkijwEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIrCgdzdG9yYWdlGAMgAygLMhoud3JjLnYyLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIocBCg1HZXRET01SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIh0KDkdldERPTVJlc3BvbnNlEgsKA2RvbRgBIAEoCSK/AQoVR2V0T2JzZXJ2YXRpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEiMKFm1heF9lbGVtZW50c19wZXJfZnJhbWUYBCABKAVIAIgBARIcCg9tYXhfdGV4dF9sZW5ndGgYBSABKAVIAYgBAUIZChdfbWF4X2VsZW1lbnRzX3Blcl9mcmFtZUISChBfbWF4X3RleHRfbGVuZ3RoIkwKFkdldE9ic2VydmF0aW9uUmVzcG9uc2USGAoQb2JzZXJ2YXRpb25fdGV4dBgBIAEoCRIYChBvYnNlcnZhdGlvbl9qc29uGAIgASgJIm0KEUdldERPTUhhc2hSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIiIKEkdldERPTUhhc2hSZXNwb25zZRIMCgRoYXNoGAEgASgJImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEioAEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEhwKBmJvdW5kcxgGIAEoCzIMLndyYy52Mi5SZWN0IokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSK6AQoPUHJlc3NLZXlSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA2tleRgEIAEoCRIRCgRjb2RlGAUgASgJSACIAQESFgoJbW9kaWZpZXJzGAYgASgFSAGIAQESFQoIbG9jYXRpb24YByABKAVIAogBAUIHCgVfY29kZUIMCgpfbW9kaWZpZXJzQgsKCV9sb2NhdGlvbiK8AQoRUmVsZWFzZUtleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIksKE0dldFNlbGVjdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkiJAoUR2V0U2VsZWN0aW9uUmVzcG9uc2USDAoEdGV4dBgBIAEoCSKLAQoRU2NyZWVuc2hvdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSEwoGZm9ybWF0GAQgASgJSACIAQESFAoHcXVhbGl0eRgFIAEoBUgBiAEBQgkKB19mb3JtYXRCCgoIX3F1YWxpdHkiSAoSU2NyZWVuc2hvdFJlc3BvbnNlEhMKC2RhdGFfYmFzZTY0GAEgASgJEg0KBXdpZHRoGAIgASgFEg4KBmhlaWdodBgDIAEoBSJkChNTb2x2ZUNhcHRjaGFSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRISCgp0aW1lb3V0X21zGAMgASgFEhQKDHJldHJ5X2Ftb3VudBgEIAEoBSImChRTb2x2ZUNhcHRjaGFSZXNwb25zZRIOCgZyZXN1bHQYASABKAkygxIKA1dSQxI7CghTZXRQcm94eRIXLndyYy52Mi5TZXRQcm94eVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSPQoIR2V0UGFnZXMSFy53cmMudjIuR2V0UGFnZXNSZXF1ZXN0Ghgud3JjLnYyLkdldFBhZ2VzUmVzcG9uc2USPQoITmF2aWdhdGUSFy53cmMudjIuTmF2aWdhdGVSZXF1ZXN0Ghgud3JjLnYyLk5hdmlnYXRlUmVzcG9uc2USOwoITG9hZEhUTUwSFy53cmMudjIuTG9hZEhUTUxSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej0KCEV2YWx1YXRlEhcud3JjLnYyLkV2YWx1YXRlUmVxdWVzdBoYLndyYy52Mi5FdmFsdWF0ZVJlc3BvbnNlEjoKCldhaXRGb3JBbnkSGC53cmMudjIuV2FpdEZvckFueVBhcmFtcxoSLndyYy52Mi5XYWl0UmVzdWx0EkcKDFNlbGVjdE9wdGlvbhIbLndyYy52Mi5TZWxlY3RPcHRpb25SZXF1ZXN0Ghoud3JjLnYyLlNlbGVjdE9wdGlvblJlc3VsdBI6CghTY3JvbGxUbxIXLndyYy52Mi5TY3JvbGxUb1JlcXVlc3QaFS53cmMudjIuRWxlbWVudFJlc3VsdBI2CgZNb3ZlVG8SFS53cmMudjIuTW92ZVRvUmVxdWVzdBoVLndyYy52Mi5FbGVtZW50UmVzdWx0EjQKBUNsaWNrEhQud3JjLnYyLkNsaWNrUmVxdWVzdBoVLndyYy52Mi5FbGVtZW50UmVzdWx0Ei8KBERyYWcSEy53cmMudjIuRHJhZ1JlcXVlc3QaEi53cmMudjIuRHJhZ1Jlc3VsdBIyCgRGaWxsEhMud3JjLnYyLkZpbGxSZXF1ZXN0GhUud3JjLnYyLkVsZW1lbnRSZXN1bHQSQwoMU2V0QmxvY2tMaXN0Ehsud3JjLnYyLlNldEJsb2NrTGlzdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRwoOU2V0U3RhdGljUGF0aHMSHS53cmMudjIuU2V0U3RhdGljUGF0aHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElgKEVdhaXRGb3JBbnlSZXF1ZXN0EiAud3JjLnYyLldhaXRGb3JBbnlSZXF1ZXN0UmVxdWVzdBohLndyYy52Mi5XYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlElsKEldhaXRGb3JBbnlSZXNwb25zZRIhLndyYy52Mi5XYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0GiIud3JjLnYyLldhaXRGb3JBbnlSZXNwb25zZVJlc3BvbnNlEkwKDU1vZGlmeVJlcXVlc3QSHC53cmMudjIuTW9kaWZ5UmVxdWVzdFJlcXVlc3QaHS53cmMudjIuTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEkMKCkdldENvb2tpZXMSGS53cmMudjIuR2V0Q29va2llc1JlcXVlc3QaGi53cmMudjIuR2V0Q29va2llc1Jlc3BvbnNlEj8KClNldENvb2tpZXMSGS53cmMudjIuU2V0Q29va2llc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSQwoMQ2xlYXJDb29raWVzEhsud3JjLnYyLkNsZWFyQ29va2llc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSQwoKR2V0U3RvcmFnZRIZLndyYy52Mi5HZXRTdG9yYWdlUmVxdWVzdBoaLndyYy52Mi5HZXRTdG9yYWdlUmVzcG9uc2USPwoKU2V0U3RvcmFnZRIZLndyYy52Mi5TZXRTdG9yYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJDCgxDbGVhclN0b3JhZ2USGy53cmMudjIuQ2xlYXJTdG9yYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRI3CgZHZXRET00SFS53cmMudjIuR2V0RE9NUmVxdWVzdBoWLndyYy52Mi5HZXRET01SZXNwb25zZRJDCgpHZXRET01IYXNoEhkud3JjLnYyLkdldERPTUhhc2hSZXF1ZXN0Ghoud3JjLnYyLkdldERPTUhhc2hSZXNwb25zZRJPCg5HZXRPYnNlcnZhdGlvbhIdLndyYy52Mi5HZXRPYnNlcnZhdGlvblJlcXVlc3QaHi53cmMudjIuR2V0T2JzZXJ2YXRpb25SZXNwb25zZRJYChFJbnNwZWN0QXRQb3NpdGlvbhIgLndyYy52Mi5JbnNwZWN0QXRQb3NpdGlvblJlcXVlc3QaIS53cmMudjIuSW5zcGVjdEF0UG9zaXRpb25SZXNwb25zZRJFCg1IaWdobGlnaHROb2RlEhwud3JjLnYyLkhpZ2hsaWdodE5vZGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkMKClNjcmVlbnNob3QSGS53cmMudjIuU2NyZWVuc2hvdFJlcXVlc3QaGi53cmMudjIuU2NyZWVuc2hvdFJlc3BvbnNlEj8KCkluc2VydFRleHQSGS53cmMudjIuSW5zZXJ0VGV4dFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSOwoIUHJlc3NLZXkSFy53cmMudjIuUHJlc3NLZXlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej8KClJlbGVhc2VLZXkSGS53cmMudjIuUmVsZWFzZUtleVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSSQoMR2V0U2VsZWN0aW9uEhsud3JjLnYyLkdldFNlbGVjdGlvblJlcXVlc3QaHC53cmMudjIuR2V0U2VsZWN0aW9uUmVzcG9uc2USSQoMU29sdmVDYXB0Y2hhEhsud3JjLnYyLlNvbHZlQ2FwdGNoYVJlcXVlc3QaHC53cmMudjIuU29sdmVDYXB0Y2hhUmVzcG9uc2VCKlooZ2l0aHViLmNvbS93ZWJyb2JvdC1kZXYvd3JjX2dvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
10
10
  /**
11
11
  * Describes the message wrc.v2.Rect.
12
12
  * Use `create(RectSchema)` to create a new message.
@@ -312,16 +312,26 @@ export const GetSelectionRequestSchema = /*@__PURE__*/ messageDesc(file_wrc, 59)
312
312
  * Use `create(GetSelectionResponseSchema)` to create a new message.
313
313
  */
314
314
  export const GetSelectionResponseSchema = /*@__PURE__*/ messageDesc(file_wrc, 60);
315
+ /**
316
+ * Describes the message wrc.v2.ScreenshotRequest.
317
+ * Use `create(ScreenshotRequestSchema)` to create a new message.
318
+ */
319
+ export const ScreenshotRequestSchema = /*@__PURE__*/ messageDesc(file_wrc, 61);
320
+ /**
321
+ * Describes the message wrc.v2.ScreenshotResponse.
322
+ * Use `create(ScreenshotResponseSchema)` to create a new message.
323
+ */
324
+ export const ScreenshotResponseSchema = /*@__PURE__*/ messageDesc(file_wrc, 62);
315
325
  /**
316
326
  * Describes the message wrc.v2.SolveCaptchaRequest.
317
327
  * Use `create(SolveCaptchaRequestSchema)` to create a new message.
318
328
  */
319
- export const SolveCaptchaRequestSchema = /*@__PURE__*/ messageDesc(file_wrc, 61);
329
+ export const SolveCaptchaRequestSchema = /*@__PURE__*/ messageDesc(file_wrc, 63);
320
330
  /**
321
331
  * Describes the message wrc.v2.SolveCaptchaResponse.
322
332
  * Use `create(SolveCaptchaResponseSchema)` to create a new message.
323
333
  */
324
- export const SolveCaptchaResponseSchema = /*@__PURE__*/ messageDesc(file_wrc, 62);
334
+ export const SolveCaptchaResponseSchema = /*@__PURE__*/ messageDesc(file_wrc, 64);
325
335
  /**
326
336
  * @generated from service wrc.v2.WRC
327
337
  */
package/dist/index.d.ts CHANGED
@@ -5,8 +5,8 @@ export { BrowserConfig } from "./config.ts";
5
5
  export { Locator, css, js, node, at, AllFrames } from "./locator.ts";
6
6
  export { DefaultWaitTimeoutMs, DefaultVisible, DefaultSteadyMs, } from "./defaults.ts";
7
7
  export { WRCError } from "./errors.ts";
8
- export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, WaitResult, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult, ObservationResult, DOMResult, InspectResult, RentResponse, } from "./types.ts";
9
- export type { Button, ClickAction, ClickOpts, FillOpts, SelectOpts, WaitOpts, WaitUntil, NavigateOpts, LoadHTMLOpts, GetDOMOpts, GetObservationOpts, } from "./options.ts";
8
+ export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, WaitResult, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult, ObservationResult, ScreenshotResult, DOMResult, InspectResult, RentResponse, } from "./types.ts";
9
+ export type { Button, ClickAction, ClickOpts, FillOpts, SelectOpts, WaitOpts, WaitUntil, NavigateOpts, LoadHTMLOpts, GetDOMOpts, GetObservationOpts, ScreenshotOpts, } from "./options.ts";
10
10
  export { type RequestPattern, type HeaderModification, type HeaderModificationAction, } from "./network.ts";
11
11
  export type { CookieParam } from "./cookies.ts";
12
12
  export type { StorageItem, StorageOriginEntry } from "./storage.ts";
package/dist/options.d.ts CHANGED
@@ -94,3 +94,10 @@ export interface GetObservationOpts {
94
94
  /** Default 200. */
95
95
  maxTextLength?: number;
96
96
  }
97
+ /** Optional customization for {@link CloudBrowser.screenshot}. */
98
+ export interface ScreenshotOpts {
99
+ /** Image format: "png" (default), "jpeg", or "webp". */
100
+ format?: "png" | "jpeg" | "webp";
101
+ /** Encode quality 0-100 for "jpeg"/"webp" (ignored for "png"). Default 90. */
102
+ quality?: number;
103
+ }
package/dist/types.d.ts CHANGED
@@ -129,6 +129,16 @@ export interface ObservationResult {
129
129
  text: string;
130
130
  json: string;
131
131
  }
132
+ /**
133
+ * ScreenshotResult is a single captured image of the page, returned by
134
+ * {@link CloudBrowser.screenshot}. `dataBase64` holds the encoded image bytes
135
+ * (PNG by default); `width` and `height` are in physical pixels.
136
+ */
137
+ export interface ScreenshotResult {
138
+ dataBase64: string;
139
+ width: number;
140
+ height: number;
141
+ }
132
142
  /**
133
143
  * DOMResult is the full-tree DOM snapshot returned by
134
144
  * {@link CloudBrowser.getDOM}, plus its sha256[:8] hash for cheap
@@ -3799,7 +3799,7 @@ function serviceDesc(file, path, ...paths) {
3799
3799
  }
3800
3800
 
3801
3801
  // src/gen/wrc_pb.ts
3802
- var file_wrc = /* @__PURE__ */ fileDesc("Cgl3cmMucHJvdG8SBndyYy52MiI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEi6wEKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiMKDWFic29sdXRlX3JlY3QYByABKAsyDC53cmMudjIuUmVjdBIjCg1yZWxhdGl2ZV9yZWN0GAggASgLMgwud3JjLnYyLlJlY3QSIwoIY2hpbGRyZW4YCSADKAsyES53cmMudjIuRnJhbWVJbmZvIpoBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSHgoIdmlld3BvcnQYBSABKAsyDC53cmMudjIuUmVjdBIlCgpmcmFtZV90cmVlGAYgASgLMhEud3JjLnYyLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSJ3ChJJbnRlcmNlcHRlZFJlcXVlc3QSDgoGbWV0aG9kGAEgASgJEgsKA3VybBgCIAEoCRIfCgdoZWFkZXJzGAMgAygLMg4ud3JjLnYyLkhlYWRlchIMCgRib2R5GAQgASgJEhUKDXJlc291cmNlX3R5cGUYBSABKAkiZgoTSW50ZXJjZXB0ZWRSZXNwb25zZRILCgN1cmwYASABKAkSEwoLc3RhdHVzX2NvZGUYAiABKAUSHwoHaGVhZGVycxgDIAMoCzIOLndyYy52Mi5IZWFkZXISDAoEYm9keRgEIAEoCSKOAQoSSGVhZGVyTW9kaWZpY2F0aW9uEgwKBG5hbWUYASABKAkSEgoFdmFsdWUYAiABKAlIAIgBARIOCgZhY3Rpb24YAyABKAkSEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFYWZ0ZXIYBSABKAlIAogBAUIICgZfdmFsdWVCCQoHX2JlZm9yZUIICgZfYWZ0ZXIiTQoSQ29va2llUGFydGl0aW9uS2V5EhYKDnRvcF9sZXZlbF9zaXRlGAEgASgJEh8KF2hhc19jcm9zc19zaXRlX2FuY2VzdG9yGAIgASgIIrYDCgtDb29raWVQYXJhbRIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJEhAKA3VybBgDIAEoCUgAiAEBEg4KBmRvbWFpbhgEIAEoCRIMCgRwYXRoGAUgASgJEhMKBnNlY3VyZRgGIAEoCEgBiAEBEhYKCWh0dHBfb25seRgHIAEoCEgCiAEBEhYKCXNhbWVfc2l0ZRgIIAEoCUgDiAEBEhQKB2V4cGlyZXMYCSABKAFIBIgBARIVCghwcmlvcml0eRgKIAEoCUgFiAEBEhoKDXNvdXJjZV9zY2hlbWUYCyABKAlIBogBARIYCgtzb3VyY2VfcG9ydBgMIAEoBUgHiAEBEjYKDXBhcnRpdGlvbl9rZXkYDSABKAsyGi53cmMudjIuQ29va2llUGFydGl0aW9uS2V5SAiIAQFCBgoEX3VybEIJCgdfc2VjdXJlQgwKCl9odHRwX29ubHlCDAoKX3NhbWVfc2l0ZUIKCghfZXhwaXJlc0ILCglfcHJpb3JpdHlCEAoOX3NvdXJjZV9zY2hlbWVCDgoMX3NvdXJjZV9wb3J0QhAKDl9wYXJ0aXRpb25fa2V5Iq0BCg1XYWl0Q29uZGl0aW9uEhUKCHNlbGVjdG9yGAEgASgJSACIAQESGgoNanNfZXhwcmVzc2lvbhgCIAEoCUgBiAEBEhQKB3Zpc2libGUYAyABKAhIAogBARIYCgtzdGVhZHlfdGltZRgEIAEoAUgDiAEBQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkIKCghfdmlzaWJsZUIOCgxfc3RlYWR5X3RpbWUieAoKV2FpdFJlc3VsdBINCgVpbmRleBgBIAEoBRIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIcCgZib3VuZHMYBSABKAsyDC53cmMudjIuUmVjdCKdAQoNRWxlbWVudFJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEhwKBmJvdW5kcxgFIAEoCzIMLndyYy52Mi5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAEiiAEKCkRyYWdSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDwoHc3RhcnRfeBgEIAEoARIPCgdzdGFydF95GAUgASgBEg0KBWVuZF94GAYgASgBEg0KBWVuZF95GAcgASgBIlsKElNlbGVjdE9wdGlvblJlc3VsdBIWCg5zZWxlY3RlZF9pbmRleBgBIAEoBRIWCg5zZWxlY3RlZF92YWx1ZRgCIAEoCRIVCg1zZWxlY3RlZF90ZXh0GAMgASgJIuYBCg9TZXRQcm94eVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKCnByb3h5X2hvc3QYAyABKAlIAIgBARIXCgpwcm94eV9wb3J0GAQgASgFSAGIAQESGwoOcHJveHlfdXNlcm5hbWUYBSABKAlIAogBARIbCg5wcm94eV9wYXNzd29yZBgGIAEoCUgDiAEBQg0KC19wcm94eV9ob3N0Qg0KC19wcm94eV9wb3J0QhEKD19wcm94eV91c2VybmFtZUIRCg9fcHJveHlfcGFzc3dvcmQiNgoPR2V0UGFnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIzChBHZXRQYWdlc1Jlc3BvbnNlEh8KBXBhZ2VzGAEgAygLMhAud3JjLnYyLlBhZ2VJbmZvIpoBCg9OYXZpZ2F0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDdXJsGAQgASgJEhUKCHJlZmVycmVyGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9yZWZlcnJlckIKCghfdGltZW91dCIxChBOYXZpZ2F0ZVJlc3BvbnNlEhAKCGZyYW1lX2lkGAEgASgJEgsKA3VybBgCIAEoCSKtAQoPTG9hZEhUTUxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIMCgRodG1sGAUgASgJEh8KB2hlYWRlcnMYBiADKAsyDi53cmMudjIuSGVhZGVyEhgKC3N0YXR1c19jb2RlGAcgASgFSACIAQFCDgoMX3N0YXR1c19jb2RlIn8KD0V2YWx1YXRlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRISCgpleHByZXNzaW9uGAQgASgJEhUKCGZyYW1lX2lkGAUgASgJSACIAQFCCwoJX2ZyYW1lX2lkIm0KEEV2YWx1YXRlUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgCIAEoBRISCgppc192aXNpYmxlGAMgASgIEhwKBmJvdW5kcxgEIAEoCzIMLndyYy52Mi5SZWN0IrkBChBXYWl0Rm9yQW55UGFyYW1zEhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEikKCmNvbmRpdGlvbnMYBCADKAsyFS53cmMudjIuV2FpdENvbmRpdGlvbhIVCghmcmFtZV9pZBgFIAEoCUgAiAEBEhQKB3RpbWVvdXQYBiABKAFIAYgBAUILCglfZnJhbWVfaWRCCgoIX3RpbWVvdXQi9QIKE1NlbGVjdE9wdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARISCgVpbmRleBgIIAEoBUgEiAEBEhIKBXZhbHVlGAkgASgJSAWIAQESEQoEdGV4dBgKIAEoCUgGiAEBEhgKC2ZpcmVfZXZlbnRzGAsgASgISAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQggKBl9pbmRleEIICgZfdmFsdWVCBwoFX3RleHRCDgoMX2ZpcmVfZXZlbnRzIu8BCg9TY3JvbGxUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWQimQIKDU1vdmVUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARIOCgF4GAggASgBSASIAQESDgoBeRgJIAEoAUgFiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIECgJfeEIECgJfeSKCAwoMQ2xpY2tSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESEwoGYnV0dG9uGAggASgJSASIAQESGAoLY2xpY2tfY291bnQYCSABKAVIBYgBARIOCgF4GAogASgBSAaIAQESDgoBeRgLIAEoAUgHiAEBEhMKBmFjdGlvbhgMIAEoCUgIiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIJCgdfYnV0dG9uQg4KDF9jbGlja19jb3VudEIECgJfeEIECgJfeUIJCgdfYWN0aW9uIoMDCgtEcmFnUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhUKCG9mZnNldF94GAggASgBSASIAQESFQoIb2Zmc2V0X3kYCSABKAFIBYgBARIXCgphYnNvbHV0ZV94GAogASgBSAaIAQESFwoKYWJzb2x1dGVfeRgLIAEoAUgHiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEILCglfb2Zmc2V0X3hCCwoJX29mZnNldF95Qg0KC19hYnNvbHV0ZV94Qg0KC19hYnNvbHV0ZV95IqMCCgtGaWxsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEgwKBHRleHQYCCABKAkSGAoLY2xlYXJfZmlyc3QYCSABKAhIBIgBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCDgoMX2NsZWFyX2ZpcnN0IkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCJXChlXYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlEg0KBWluZGV4GAEgASgFEisKB3JlcXVlc3QYAiABKAsyGi53cmMudjIuSW50ZXJjZXB0ZWRSZXF1ZXN0IokBChlXYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCRITCgthYm9ydF9mbGFncxgEIAMoBRIUCgd0aW1lb3V0GAUgASgBSACIAQFCCgoIX3RpbWVvdXQiWgoaV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USDQoFaW5kZXgYASABKAUSLQoIcmVzcG9uc2UYAiABKAsyGy53cmMudjIuSW50ZXJjZXB0ZWRSZXNwb25zZSLBAQoUTW9kaWZ5UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhMKC3VybF9wYXR0ZXJuGAMgASgJEjEKDW1vZGlmaWNhdGlvbnMYBCADKAsyGi53cmMudjIuSGVhZGVyTW9kaWZpY2F0aW9uEhEKBGJvZHkYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCBwoFX2JvZHlCCgoIX3RpbWVvdXQiRAoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEisKB3JlcXVlc3QYASABKAsyGi53cmMudjIuSW50ZXJjZXB0ZWRSZXF1ZXN0IjgKEUdldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSI6ChJHZXRDb29raWVzUmVzcG9uc2USJAoHY29va2llcxgBIAMoCzITLndyYy52Mi5Db29raWVQYXJhbSJeChFTZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSJAoHY29va2llcxgDIAMoCzITLndyYy52Mi5Db29raWVQYXJhbSI6ChNDbGVhckNvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIpCgtTdG9yYWdlSXRlbRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiSAoSU3RvcmFnZU9yaWdpbkVudHJ5Eg4KBm9yaWdpbhgBIAEoCRIiCgVpdGVtcxgCIAMoCzITLndyYy52Mi5TdG9yYWdlSXRlbSJYChFHZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiJBChJHZXRTdG9yYWdlUmVzcG9uc2USKwoHc3RvcmFnZRgBIAMoCzIaLndyYy52Mi5TdG9yYWdlT3JpZ2luRW50cnkijwEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIrCgdzdG9yYWdlGAMgAygLMhoud3JjLnYyLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIocBCg1HZXRET01SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIh0KDkdldERPTVJlc3BvbnNlEgsKA2RvbRgBIAEoCSK/AQoVR2V0T2JzZXJ2YXRpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEiMKFm1heF9lbGVtZW50c19wZXJfZnJhbWUYBCABKAVIAIgBARIcCg9tYXhfdGV4dF9sZW5ndGgYBSABKAVIAYgBAUIZChdfbWF4X2VsZW1lbnRzX3Blcl9mcmFtZUISChBfbWF4X3RleHRfbGVuZ3RoIkwKFkdldE9ic2VydmF0aW9uUmVzcG9uc2USGAoQb2JzZXJ2YXRpb25fdGV4dBgBIAEoCRIYChBvYnNlcnZhdGlvbl9qc29uGAIgASgJIm0KEUdldERPTUhhc2hSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIiIKEkdldERPTUhhc2hSZXNwb25zZRIMCgRoYXNoGAEgASgJImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEioAEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEhwKBmJvdW5kcxgGIAEoCzIMLndyYy52Mi5SZWN0IokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSK6AQoPUHJlc3NLZXlSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA2tleRgEIAEoCRIRCgRjb2RlGAUgASgJSACIAQESFgoJbW9kaWZpZXJzGAYgASgFSAGIAQESFQoIbG9jYXRpb24YByABKAVIAogBAUIHCgVfY29kZUIMCgpfbW9kaWZpZXJzQgsKCV9sb2NhdGlvbiK8AQoRUmVsZWFzZUtleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIksKE0dldFNlbGVjdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkiJAoUR2V0U2VsZWN0aW9uUmVzcG9uc2USDAoEdGV4dBgBIAEoCSJkChNTb2x2ZUNhcHRjaGFSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRISCgp0aW1lb3V0X21zGAMgASgFEhQKDHJldHJ5X2Ftb3VudBgEIAEoBSImChRTb2x2ZUNhcHRjaGFSZXNwb25zZRIOCgZyZXN1bHQYASABKAkyvhEKA1dSQxI7CghTZXRQcm94eRIXLndyYy52Mi5TZXRQcm94eVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSPQoIR2V0UGFnZXMSFy53cmMudjIuR2V0UGFnZXNSZXF1ZXN0Ghgud3JjLnYyLkdldFBhZ2VzUmVzcG9uc2USPQoITmF2aWdhdGUSFy53cmMudjIuTmF2aWdhdGVSZXF1ZXN0Ghgud3JjLnYyLk5hdmlnYXRlUmVzcG9uc2USOwoITG9hZEhUTUwSFy53cmMudjIuTG9hZEhUTUxSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej0KCEV2YWx1YXRlEhcud3JjLnYyLkV2YWx1YXRlUmVxdWVzdBoYLndyYy52Mi5FdmFsdWF0ZVJlc3BvbnNlEjoKCldhaXRGb3JBbnkSGC53cmMudjIuV2FpdEZvckFueVBhcmFtcxoSLndyYy52Mi5XYWl0UmVzdWx0EkcKDFNlbGVjdE9wdGlvbhIbLndyYy52Mi5TZWxlY3RPcHRpb25SZXF1ZXN0Ghoud3JjLnYyLlNlbGVjdE9wdGlvblJlc3VsdBI6CghTY3JvbGxUbxIXLndyYy52Mi5TY3JvbGxUb1JlcXVlc3QaFS53cmMudjIuRWxlbWVudFJlc3VsdBI2CgZNb3ZlVG8SFS53cmMudjIuTW92ZVRvUmVxdWVzdBoVLndyYy52Mi5FbGVtZW50UmVzdWx0EjQKBUNsaWNrEhQud3JjLnYyLkNsaWNrUmVxdWVzdBoVLndyYy52Mi5FbGVtZW50UmVzdWx0Ei8KBERyYWcSEy53cmMudjIuRHJhZ1JlcXVlc3QaEi53cmMudjIuRHJhZ1Jlc3VsdBIyCgRGaWxsEhMud3JjLnYyLkZpbGxSZXF1ZXN0GhUud3JjLnYyLkVsZW1lbnRSZXN1bHQSQwoMU2V0QmxvY2tMaXN0Ehsud3JjLnYyLlNldEJsb2NrTGlzdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRwoOU2V0U3RhdGljUGF0aHMSHS53cmMudjIuU2V0U3RhdGljUGF0aHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElgKEVdhaXRGb3JBbnlSZXF1ZXN0EiAud3JjLnYyLldhaXRGb3JBbnlSZXF1ZXN0UmVxdWVzdBohLndyYy52Mi5XYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlElsKEldhaXRGb3JBbnlSZXNwb25zZRIhLndyYy52Mi5XYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0GiIud3JjLnYyLldhaXRGb3JBbnlSZXNwb25zZVJlc3BvbnNlEkwKDU1vZGlmeVJlcXVlc3QSHC53cmMudjIuTW9kaWZ5UmVxdWVzdFJlcXVlc3QaHS53cmMudjIuTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEkMKCkdldENvb2tpZXMSGS53cmMudjIuR2V0Q29va2llc1JlcXVlc3QaGi53cmMudjIuR2V0Q29va2llc1Jlc3BvbnNlEj8KClNldENvb2tpZXMSGS53cmMudjIuU2V0Q29va2llc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSQwoMQ2xlYXJDb29raWVzEhsud3JjLnYyLkNsZWFyQ29va2llc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSQwoKR2V0U3RvcmFnZRIZLndyYy52Mi5HZXRTdG9yYWdlUmVxdWVzdBoaLndyYy52Mi5HZXRTdG9yYWdlUmVzcG9uc2USPwoKU2V0U3RvcmFnZRIZLndyYy52Mi5TZXRTdG9yYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJDCgxDbGVhclN0b3JhZ2USGy53cmMudjIuQ2xlYXJTdG9yYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRI3CgZHZXRET00SFS53cmMudjIuR2V0RE9NUmVxdWVzdBoWLndyYy52Mi5HZXRET01SZXNwb25zZRJDCgpHZXRET01IYXNoEhkud3JjLnYyLkdldERPTUhhc2hSZXF1ZXN0Ghoud3JjLnYyLkdldERPTUhhc2hSZXNwb25zZRJPCg5HZXRPYnNlcnZhdGlvbhIdLndyYy52Mi5HZXRPYnNlcnZhdGlvblJlcXVlc3QaHi53cmMudjIuR2V0T2JzZXJ2YXRpb25SZXNwb25zZRJYChFJbnNwZWN0QXRQb3NpdGlvbhIgLndyYy52Mi5JbnNwZWN0QXRQb3NpdGlvblJlcXVlc3QaIS53cmMudjIuSW5zcGVjdEF0UG9zaXRpb25SZXNwb25zZRJFCg1IaWdobGlnaHROb2RlEhwud3JjLnYyLkhpZ2hsaWdodE5vZGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej8KCkluc2VydFRleHQSGS53cmMudjIuSW5zZXJ0VGV4dFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSOwoIUHJlc3NLZXkSFy53cmMudjIuUHJlc3NLZXlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej8KClJlbGVhc2VLZXkSGS53cmMudjIuUmVsZWFzZUtleVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSSQoMR2V0U2VsZWN0aW9uEhsud3JjLnYyLkdldFNlbGVjdGlvblJlcXVlc3QaHC53cmMudjIuR2V0U2VsZWN0aW9uUmVzcG9uc2USSQoMU29sdmVDYXB0Y2hhEhsud3JjLnYyLlNvbHZlQ2FwdGNoYVJlcXVlc3QaHC53cmMudjIuU29sdmVDYXB0Y2hhUmVzcG9uc2VCKlooZ2l0aHViLmNvbS93ZWJyb2JvdC1kZXYvd3JjX2dvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
3802
+ var file_wrc = /* @__PURE__ */ fileDesc("Cgl3cmMucHJvdG8SBndyYy52MiI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEi6wEKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiMKDWFic29sdXRlX3JlY3QYByABKAsyDC53cmMudjIuUmVjdBIjCg1yZWxhdGl2ZV9yZWN0GAggASgLMgwud3JjLnYyLlJlY3QSIwoIY2hpbGRyZW4YCSADKAsyES53cmMudjIuRnJhbWVJbmZvIpoBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSHgoIdmlld3BvcnQYBSABKAsyDC53cmMudjIuUmVjdBIlCgpmcmFtZV90cmVlGAYgASgLMhEud3JjLnYyLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSJ3ChJJbnRlcmNlcHRlZFJlcXVlc3QSDgoGbWV0aG9kGAEgASgJEgsKA3VybBgCIAEoCRIfCgdoZWFkZXJzGAMgAygLMg4ud3JjLnYyLkhlYWRlchIMCgRib2R5GAQgASgJEhUKDXJlc291cmNlX3R5cGUYBSABKAkiZgoTSW50ZXJjZXB0ZWRSZXNwb25zZRILCgN1cmwYASABKAkSEwoLc3RhdHVzX2NvZGUYAiABKAUSHwoHaGVhZGVycxgDIAMoCzIOLndyYy52Mi5IZWFkZXISDAoEYm9keRgEIAEoCSKOAQoSSGVhZGVyTW9kaWZpY2F0aW9uEgwKBG5hbWUYASABKAkSEgoFdmFsdWUYAiABKAlIAIgBARIOCgZhY3Rpb24YAyABKAkSEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFYWZ0ZXIYBSABKAlIAogBAUIICgZfdmFsdWVCCQoHX2JlZm9yZUIICgZfYWZ0ZXIiTQoSQ29va2llUGFydGl0aW9uS2V5EhYKDnRvcF9sZXZlbF9zaXRlGAEgASgJEh8KF2hhc19jcm9zc19zaXRlX2FuY2VzdG9yGAIgASgIIrYDCgtDb29raWVQYXJhbRIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJEhAKA3VybBgDIAEoCUgAiAEBEg4KBmRvbWFpbhgEIAEoCRIMCgRwYXRoGAUgASgJEhMKBnNlY3VyZRgGIAEoCEgBiAEBEhYKCWh0dHBfb25seRgHIAEoCEgCiAEBEhYKCXNhbWVfc2l0ZRgIIAEoCUgDiAEBEhQKB2V4cGlyZXMYCSABKAFIBIgBARIVCghwcmlvcml0eRgKIAEoCUgFiAEBEhoKDXNvdXJjZV9zY2hlbWUYCyABKAlIBogBARIYCgtzb3VyY2VfcG9ydBgMIAEoBUgHiAEBEjYKDXBhcnRpdGlvbl9rZXkYDSABKAsyGi53cmMudjIuQ29va2llUGFydGl0aW9uS2V5SAiIAQFCBgoEX3VybEIJCgdfc2VjdXJlQgwKCl9odHRwX29ubHlCDAoKX3NhbWVfc2l0ZUIKCghfZXhwaXJlc0ILCglfcHJpb3JpdHlCEAoOX3NvdXJjZV9zY2hlbWVCDgoMX3NvdXJjZV9wb3J0QhAKDl9wYXJ0aXRpb25fa2V5Iq0BCg1XYWl0Q29uZGl0aW9uEhUKCHNlbGVjdG9yGAEgASgJSACIAQESGgoNanNfZXhwcmVzc2lvbhgCIAEoCUgBiAEBEhQKB3Zpc2libGUYAyABKAhIAogBARIYCgtzdGVhZHlfdGltZRgEIAEoAUgDiAEBQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkIKCghfdmlzaWJsZUIOCgxfc3RlYWR5X3RpbWUieAoKV2FpdFJlc3VsdBINCgVpbmRleBgBIAEoBRIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIcCgZib3VuZHMYBSABKAsyDC53cmMudjIuUmVjdCKdAQoNRWxlbWVudFJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEhwKBmJvdW5kcxgFIAEoCzIMLndyYy52Mi5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAEiiAEKCkRyYWdSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDwoHc3RhcnRfeBgEIAEoARIPCgdzdGFydF95GAUgASgBEg0KBWVuZF94GAYgASgBEg0KBWVuZF95GAcgASgBIlsKElNlbGVjdE9wdGlvblJlc3VsdBIWCg5zZWxlY3RlZF9pbmRleBgBIAEoBRIWCg5zZWxlY3RlZF92YWx1ZRgCIAEoCRIVCg1zZWxlY3RlZF90ZXh0GAMgASgJIuYBCg9TZXRQcm94eVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKCnByb3h5X2hvc3QYAyABKAlIAIgBARIXCgpwcm94eV9wb3J0GAQgASgFSAGIAQESGwoOcHJveHlfdXNlcm5hbWUYBSABKAlIAogBARIbCg5wcm94eV9wYXNzd29yZBgGIAEoCUgDiAEBQg0KC19wcm94eV9ob3N0Qg0KC19wcm94eV9wb3J0QhEKD19wcm94eV91c2VybmFtZUIRCg9fcHJveHlfcGFzc3dvcmQiNgoPR2V0UGFnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIzChBHZXRQYWdlc1Jlc3BvbnNlEh8KBXBhZ2VzGAEgAygLMhAud3JjLnYyLlBhZ2VJbmZvIpoBCg9OYXZpZ2F0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDdXJsGAQgASgJEhUKCHJlZmVycmVyGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9yZWZlcnJlckIKCghfdGltZW91dCIxChBOYXZpZ2F0ZVJlc3BvbnNlEhAKCGZyYW1lX2lkGAEgASgJEgsKA3VybBgCIAEoCSKtAQoPTG9hZEhUTUxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIMCgRodG1sGAUgASgJEh8KB2hlYWRlcnMYBiADKAsyDi53cmMudjIuSGVhZGVyEhgKC3N0YXR1c19jb2RlGAcgASgFSACIAQFCDgoMX3N0YXR1c19jb2RlIn8KD0V2YWx1YXRlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRISCgpleHByZXNzaW9uGAQgASgJEhUKCGZyYW1lX2lkGAUgASgJSACIAQFCCwoJX2ZyYW1lX2lkIm0KEEV2YWx1YXRlUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgCIAEoBRISCgppc192aXNpYmxlGAMgASgIEhwKBmJvdW5kcxgEIAEoCzIMLndyYy52Mi5SZWN0IrkBChBXYWl0Rm9yQW55UGFyYW1zEhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEikKCmNvbmRpdGlvbnMYBCADKAsyFS53cmMudjIuV2FpdENvbmRpdGlvbhIVCghmcmFtZV9pZBgFIAEoCUgAiAEBEhQKB3RpbWVvdXQYBiABKAFIAYgBAUILCglfZnJhbWVfaWRCCgoIX3RpbWVvdXQi9QIKE1NlbGVjdE9wdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARISCgVpbmRleBgIIAEoBUgEiAEBEhIKBXZhbHVlGAkgASgJSAWIAQESEQoEdGV4dBgKIAEoCUgGiAEBEhgKC2ZpcmVfZXZlbnRzGAsgASgISAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQggKBl9pbmRleEIICgZfdmFsdWVCBwoFX3RleHRCDgoMX2ZpcmVfZXZlbnRzIu8BCg9TY3JvbGxUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWQimQIKDU1vdmVUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARIOCgF4GAggASgBSASIAQESDgoBeRgJIAEoAUgFiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIECgJfeEIECgJfeSKCAwoMQ2xpY2tSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESEwoGYnV0dG9uGAggASgJSASIAQESGAoLY2xpY2tfY291bnQYCSABKAVIBYgBARIOCgF4GAogASgBSAaIAQESDgoBeRgLIAEoAUgHiAEBEhMKBmFjdGlvbhgMIAEoCUgIiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIJCgdfYnV0dG9uQg4KDF9jbGlja19jb3VudEIECgJfeEIECgJfeUIJCgdfYWN0aW9uIoMDCgtEcmFnUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhUKCG9mZnNldF94GAggASgBSASIAQESFQoIb2Zmc2V0X3kYCSABKAFIBYgBARIXCgphYnNvbHV0ZV94GAogASgBSAaIAQESFwoKYWJzb2x1dGVfeRgLIAEoAUgHiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEILCglfb2Zmc2V0X3hCCwoJX29mZnNldF95Qg0KC19hYnNvbHV0ZV94Qg0KC19hYnNvbHV0ZV95IqMCCgtGaWxsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEgwKBHRleHQYCCABKAkSGAoLY2xlYXJfZmlyc3QYCSABKAhIBIgBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCDgoMX2NsZWFyX2ZpcnN0IkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCJXChlXYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlEg0KBWluZGV4GAEgASgFEisKB3JlcXVlc3QYAiABKAsyGi53cmMudjIuSW50ZXJjZXB0ZWRSZXF1ZXN0IokBChlXYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCRITCgthYm9ydF9mbGFncxgEIAMoBRIUCgd0aW1lb3V0GAUgASgBSACIAQFCCgoIX3RpbWVvdXQiWgoaV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USDQoFaW5kZXgYASABKAUSLQoIcmVzcG9uc2UYAiABKAsyGy53cmMudjIuSW50ZXJjZXB0ZWRSZXNwb25zZSLBAQoUTW9kaWZ5UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhMKC3VybF9wYXR0ZXJuGAMgASgJEjEKDW1vZGlmaWNhdGlvbnMYBCADKAsyGi53cmMudjIuSGVhZGVyTW9kaWZpY2F0aW9uEhEKBGJvZHkYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCBwoFX2JvZHlCCgoIX3RpbWVvdXQiRAoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEisKB3JlcXVlc3QYASABKAsyGi53cmMudjIuSW50ZXJjZXB0ZWRSZXF1ZXN0IjgKEUdldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSI6ChJHZXRDb29raWVzUmVzcG9uc2USJAoHY29va2llcxgBIAMoCzITLndyYy52Mi5Db29raWVQYXJhbSJeChFTZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSJAoHY29va2llcxgDIAMoCzITLndyYy52Mi5Db29raWVQYXJhbSI6ChNDbGVhckNvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIpCgtTdG9yYWdlSXRlbRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiSAoSU3RvcmFnZU9yaWdpbkVudHJ5Eg4KBm9yaWdpbhgBIAEoCRIiCgVpdGVtcxgCIAMoCzITLndyYy52Mi5TdG9yYWdlSXRlbSJYChFHZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiJBChJHZXRTdG9yYWdlUmVzcG9uc2USKwoHc3RvcmFnZRgBIAMoCzIaLndyYy52Mi5TdG9yYWdlT3JpZ2luRW50cnkijwEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIrCgdzdG9yYWdlGAMgAygLMhoud3JjLnYyLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIocBCg1HZXRET01SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIh0KDkdldERPTVJlc3BvbnNlEgsKA2RvbRgBIAEoCSK/AQoVR2V0T2JzZXJ2YXRpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEiMKFm1heF9lbGVtZW50c19wZXJfZnJhbWUYBCABKAVIAIgBARIcCg9tYXhfdGV4dF9sZW5ndGgYBSABKAVIAYgBAUIZChdfbWF4X2VsZW1lbnRzX3Blcl9mcmFtZUISChBfbWF4X3RleHRfbGVuZ3RoIkwKFkdldE9ic2VydmF0aW9uUmVzcG9uc2USGAoQb2JzZXJ2YXRpb25fdGV4dBgBIAEoCRIYChBvYnNlcnZhdGlvbl9qc29uGAIgASgJIm0KEUdldERPTUhhc2hSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIiIKEkdldERPTUhhc2hSZXNwb25zZRIMCgRoYXNoGAEgASgJImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEioAEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEhwKBmJvdW5kcxgGIAEoCzIMLndyYy52Mi5SZWN0IokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSK6AQoPUHJlc3NLZXlSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA2tleRgEIAEoCRIRCgRjb2RlGAUgASgJSACIAQESFgoJbW9kaWZpZXJzGAYgASgFSAGIAQESFQoIbG9jYXRpb24YByABKAVIAogBAUIHCgVfY29kZUIMCgpfbW9kaWZpZXJzQgsKCV9sb2NhdGlvbiK8AQoRUmVsZWFzZUtleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIksKE0dldFNlbGVjdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkiJAoUR2V0U2VsZWN0aW9uUmVzcG9uc2USDAoEdGV4dBgBIAEoCSKLAQoRU2NyZWVuc2hvdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSEwoGZm9ybWF0GAQgASgJSACIAQESFAoHcXVhbGl0eRgFIAEoBUgBiAEBQgkKB19mb3JtYXRCCgoIX3F1YWxpdHkiSAoSU2NyZWVuc2hvdFJlc3BvbnNlEhMKC2RhdGFfYmFzZTY0GAEgASgJEg0KBXdpZHRoGAIgASgFEg4KBmhlaWdodBgDIAEoBSJkChNTb2x2ZUNhcHRjaGFSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRISCgp0aW1lb3V0X21zGAMgASgFEhQKDHJldHJ5X2Ftb3VudBgEIAEoBSImChRTb2x2ZUNhcHRjaGFSZXNwb25zZRIOCgZyZXN1bHQYASABKAkygxIKA1dSQxI7CghTZXRQcm94eRIXLndyYy52Mi5TZXRQcm94eVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSPQoIR2V0UGFnZXMSFy53cmMudjIuR2V0UGFnZXNSZXF1ZXN0Ghgud3JjLnYyLkdldFBhZ2VzUmVzcG9uc2USPQoITmF2aWdhdGUSFy53cmMudjIuTmF2aWdhdGVSZXF1ZXN0Ghgud3JjLnYyLk5hdmlnYXRlUmVzcG9uc2USOwoITG9hZEhUTUwSFy53cmMudjIuTG9hZEhUTUxSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej0KCEV2YWx1YXRlEhcud3JjLnYyLkV2YWx1YXRlUmVxdWVzdBoYLndyYy52Mi5FdmFsdWF0ZVJlc3BvbnNlEjoKCldhaXRGb3JBbnkSGC53cmMudjIuV2FpdEZvckFueVBhcmFtcxoSLndyYy52Mi5XYWl0UmVzdWx0EkcKDFNlbGVjdE9wdGlvbhIbLndyYy52Mi5TZWxlY3RPcHRpb25SZXF1ZXN0Ghoud3JjLnYyLlNlbGVjdE9wdGlvblJlc3VsdBI6CghTY3JvbGxUbxIXLndyYy52Mi5TY3JvbGxUb1JlcXVlc3QaFS53cmMudjIuRWxlbWVudFJlc3VsdBI2CgZNb3ZlVG8SFS53cmMudjIuTW92ZVRvUmVxdWVzdBoVLndyYy52Mi5FbGVtZW50UmVzdWx0EjQKBUNsaWNrEhQud3JjLnYyLkNsaWNrUmVxdWVzdBoVLndyYy52Mi5FbGVtZW50UmVzdWx0Ei8KBERyYWcSEy53cmMudjIuRHJhZ1JlcXVlc3QaEi53cmMudjIuRHJhZ1Jlc3VsdBIyCgRGaWxsEhMud3JjLnYyLkZpbGxSZXF1ZXN0GhUud3JjLnYyLkVsZW1lbnRSZXN1bHQSQwoMU2V0QmxvY2tMaXN0Ehsud3JjLnYyLlNldEJsb2NrTGlzdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRwoOU2V0U3RhdGljUGF0aHMSHS53cmMudjIuU2V0U3RhdGljUGF0aHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElgKEVdhaXRGb3JBbnlSZXF1ZXN0EiAud3JjLnYyLldhaXRGb3JBbnlSZXF1ZXN0UmVxdWVzdBohLndyYy52Mi5XYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlElsKEldhaXRGb3JBbnlSZXNwb25zZRIhLndyYy52Mi5XYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0GiIud3JjLnYyLldhaXRGb3JBbnlSZXNwb25zZVJlc3BvbnNlEkwKDU1vZGlmeVJlcXVlc3QSHC53cmMudjIuTW9kaWZ5UmVxdWVzdFJlcXVlc3QaHS53cmMudjIuTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEkMKCkdldENvb2tpZXMSGS53cmMudjIuR2V0Q29va2llc1JlcXVlc3QaGi53cmMudjIuR2V0Q29va2llc1Jlc3BvbnNlEj8KClNldENvb2tpZXMSGS53cmMudjIuU2V0Q29va2llc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSQwoMQ2xlYXJDb29raWVzEhsud3JjLnYyLkNsZWFyQ29va2llc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSQwoKR2V0U3RvcmFnZRIZLndyYy52Mi5HZXRTdG9yYWdlUmVxdWVzdBoaLndyYy52Mi5HZXRTdG9yYWdlUmVzcG9uc2USPwoKU2V0U3RvcmFnZRIZLndyYy52Mi5TZXRTdG9yYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJDCgxDbGVhclN0b3JhZ2USGy53cmMudjIuQ2xlYXJTdG9yYWdlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRI3CgZHZXRET00SFS53cmMudjIuR2V0RE9NUmVxdWVzdBoWLndyYy52Mi5HZXRET01SZXNwb25zZRJDCgpHZXRET01IYXNoEhkud3JjLnYyLkdldERPTUhhc2hSZXF1ZXN0Ghoud3JjLnYyLkdldERPTUhhc2hSZXNwb25zZRJPCg5HZXRPYnNlcnZhdGlvbhIdLndyYy52Mi5HZXRPYnNlcnZhdGlvblJlcXVlc3QaHi53cmMudjIuR2V0T2JzZXJ2YXRpb25SZXNwb25zZRJYChFJbnNwZWN0QXRQb3NpdGlvbhIgLndyYy52Mi5JbnNwZWN0QXRQb3NpdGlvblJlcXVlc3QaIS53cmMudjIuSW5zcGVjdEF0UG9zaXRpb25SZXNwb25zZRJFCg1IaWdobGlnaHROb2RlEhwud3JjLnYyLkhpZ2hsaWdodE5vZGVSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkMKClNjcmVlbnNob3QSGS53cmMudjIuU2NyZWVuc2hvdFJlcXVlc3QaGi53cmMudjIuU2NyZWVuc2hvdFJlc3BvbnNlEj8KCkluc2VydFRleHQSGS53cmMudjIuSW5zZXJ0VGV4dFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSOwoIUHJlc3NLZXkSFy53cmMudjIuUHJlc3NLZXlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ej8KClJlbGVhc2VLZXkSGS53cmMudjIuUmVsZWFzZUtleVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSSQoMR2V0U2VsZWN0aW9uEhsud3JjLnYyLkdldFNlbGVjdGlvblJlcXVlc3QaHC53cmMudjIuR2V0U2VsZWN0aW9uUmVzcG9uc2USSQoMU29sdmVDYXB0Y2hhEhsud3JjLnYyLlNvbHZlQ2FwdGNoYVJlcXVlc3QaHC53cmMudjIuU29sdmVDYXB0Y2hhUmVzcG9uc2VCKlooZ2l0aHViLmNvbS93ZWJyb2JvdC1kZXYvd3JjX2dvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
3803
3803
  var HeaderSchema = /* @__PURE__ */ messageDesc(file_wrc, 3);
3804
3804
  var HeaderModificationSchema = /* @__PURE__ */ messageDesc(file_wrc, 6);
3805
3805
  var CookiePartitionKeySchema = /* @__PURE__ */ messageDesc(file_wrc, 7);
@@ -3839,7 +3839,8 @@ var InsertTextRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 56);
3839
3839
  var PressKeyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 57);
3840
3840
  var ReleaseKeyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 58);
3841
3841
  var GetSelectionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 59);
3842
- var SolveCaptchaRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 61);
3842
+ var ScreenshotRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 61);
3843
+ var SolveCaptchaRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 63);
3843
3844
  var WRC = /* @__PURE__ */ serviceDesc(file_wrc, 0);
3844
3845
 
3845
3846
  // src/defaults.ts
@@ -4903,6 +4904,40 @@ var CloudBrowser = class {
4903
4904
  const resp = await this.client.getObservation(req);
4904
4905
  return { text: resp.observationText, json: resp.observationJson };
4905
4906
  }
4907
+ /**
4908
+ * Captures a single image of the page's current frame and returns it as
4909
+ * base64-encoded image bytes.
4910
+ *
4911
+ * The capture uses a one-shot surface copy (the same mechanism as CDP
4912
+ * Page.captureScreenshot), so it is independent of any active live stream
4913
+ * and works with both GPU (hardware) and software compositing.
4914
+ *
4915
+ * @param opts - optional `format` ("png" default, "jpeg", "webp") and
4916
+ * `quality` (0-100, for jpeg/webp only); omit to use the server defaults
4917
+ *
4918
+ * @returns ScreenshotResult with the base64 image in `dataBase64` and the
4919
+ * physical pixel `width`/`height`
4920
+ *
4921
+ * @throws UNKNOWN_ERROR - the screenshot could not be captured
4922
+ *
4923
+ * @example
4924
+ * const shot = await browser.screenshot({ format: "png" });
4925
+ * await fs.writeFile("page.png", Buffer.from(shot.dataBase64, "base64"));
4926
+ */
4927
+ async screenshot(opts) {
4928
+ const req = create(ScreenshotRequestSchema, {
4929
+ sessionId: this.sessionId,
4930
+ apiKey: this.apiKey
4931
+ });
4932
+ if (opts?.format !== void 0) req.format = opts.format;
4933
+ if (opts?.quality !== void 0) req.quality = opts.quality;
4934
+ const resp = await this.client.screenshot(req);
4935
+ return {
4936
+ dataBase64: resp.dataBase64,
4937
+ width: resp.width,
4938
+ height: resp.height
4939
+ };
4940
+ }
4906
4941
  // ──────────────────────────────────────────────────────────────────
4907
4942
  // Network interception
4908
4943
  // ──────────────────────────────────────────────────────────────────
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wrc-ts",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Official SDK for WebRobot Cloud — undetected stealth browsers in the cloud. Rent real Chromium sessions with unique fingerprints, built-in proxies, captcha solving, human-like input and live video — scale web scraping and automation without running a single browser yourself.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",