fix gitignore

This commit is contained in:
Kendell R 2023-09-07 15:37:14 -07:00
parent fd74e36a8a
commit 95895056ef
No known key found for this signature in database
GPG key ID: 64314E306EEF6109
19 changed files with 3 additions and 37316 deletions

4
.gitignore vendored
View file

@ -3,9 +3,11 @@ dist.js
dist.js.map
dist.html
*/dist/
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
admin-creds.json
server/config.json
.firebaserrc
.firebase
.env
pnpm-lock.yaml
pnpm-lock.yaml

8
dist/Transport.d.ts vendored
View file

@ -1,8 +0,0 @@
export declare abstract class Transport {
onopen: () => void;
onclose: () => void;
ondata: (data: ArrayBuffer) => void;
constructor(onopen: () => void, onclose: () => void);
abstract send(data: ArrayBuffer): void;
abstract close(): void;
}

18433
dist/client.cjs vendored

File diff suppressed because it is too large Load diff

18417
dist/client.mjs vendored

File diff suppressed because it is too large Load diff

View file

@ -1,8 +0,0 @@
import { BareHeaders, BareResponse, Client, GetRequestHeadersCallback, MetaCallback, ReadyStateCallback, WebSocketImpl } from "bare-client-custom";
import { Connection } from "./Connection";
export declare class AdriftBareClient extends Client {
private connection;
constructor(connection: Connection);
request(method: string, requestHeaders: BareHeaders, body: BodyInit | null, remote: URL, cache: string | undefined, duplex: string | undefined, signal: AbortSignal | undefined, arrayBufferImpl: ArrayBufferConstructor): Promise<BareResponse>;
connect(remote: URL, protocols: string | string[], getRequestHeaders: GetRequestHeadersCallback, onMeta: MetaCallback, onReadyState: ReadyStateCallback, webSocketImpl: WebSocketImpl, arrayBufferImpl: ArrayBufferConstructor): WebSocket;
}

View file

@ -1,36 +0,0 @@
import { C2SRequestType, HTTPResponsePayload, ProtoBareHeaders, Transport } from "protocol";
type OpenWSMeta = {
onopen: (protocol: string) => void;
onclose: (code: number, reason: string, wasClean: boolean) => void;
onmessage: (data: ReadableStream, isBinary: boolean) => void;
onerror: (message: string) => void;
};
export declare class Connection {
transport: Transport;
initialized: boolean;
requestCallbacks: Record<number, Function>;
openRequestStreams: Record<number, ReadableStreamDefaultController<any>>;
openingSockets: Record<number, OpenWSMeta>;
openSockets: Record<number, OpenWSMeta>;
wsMsgStreams: Record<number, ReadableStreamDefaultController<any>>;
counter: number;
static uninitializedError(): void;
constructor(transport: Transport);
initialize(): Promise<void>;
nextSeq(): number;
ondata(data: ArrayBuffer): void;
send(requestID: number, type: C2SRequestType, data?: ArrayBuffer | Blob): Promise<void>;
httprequest(data: {
method: string;
requestHeaders: ProtoBareHeaders;
remote: URL;
}, body: ReadableStream<ArrayBuffer | Uint8Array> | null): Promise<{
payload: HTTPResponsePayload;
body: ArrayBuffer;
}>;
wsconnect(url: URL, protocols: string | string[], onopen: (protocol: string) => void, onclose: (code: number, reason: string, wasClean: boolean) => void, onmessage: (data: ReadableStream, isBinary: boolean) => void, onerror: (message: string) => void, arrayBufferImpl: ArrayBufferConstructor): {
send: (data: any) => void;
close: (code?: number, reason?: string) => void;
};
}
export {};

View file

@ -1,8 +0,0 @@
import { Transport } from "protocol";
export declare class DevWsTransport extends Transport {
ws: WebSocket;
constructor(onopen: () => void, onclose: () => void);
onmessage(msg: MessageEvent<any>): void;
send(data: ArrayBuffer): void;
close(): void;
}

View file

@ -1,23 +0,0 @@
import { Transport } from "protocol";
export type Offer = {
offer: any;
localCandidates: any;
};
export type Answer = {
answer: any;
candidates: any;
};
export declare class RTCTransport extends Transport {
onopen: () => void;
onclose: () => void;
onconnectionstatechange: () => void;
onsignalingstatechange: () => void;
onicegatheringstatechange: () => void;
peer: RTCPeerConnection;
dataChannel: RTCDataChannel;
constructor(onopen: () => void, onclose: () => void, onconnectionstatechange: () => void, onsignalingstatechange: () => void, onicegatheringstatechange: () => void);
send(data: ArrayBuffer): void;
close(): void;
createOffer(): Promise<Promise<Offer>>;
answer(answer: any, candidates: any): Promise<void>;
}

View file

@ -1,3 +0,0 @@
import { Answer } from "./RTCTransport";
export declare function signalSwarm(offer: string): Promise<Answer>;
export declare function signalAccount(offer: string): Promise<Answer>;

View file

@ -1,6 +0,0 @@
export { AdriftBareClient } from "./AdriftClient";
export { Connection } from "./Connection";
export { DevWsTransport } from "./DevWsTransport";
export { RTCTransport } from "./RTCTransport";
export * as SignalFirebase from "./SignalFirebase";
export declare function downloadShortcut(name: string, title: string): void;

57
dist/index.d.ts vendored
View file

@ -1,57 +0,0 @@
export type ObjectValues<T> = T[keyof T];
export declare const C2SRequestTypes: {
readonly HTTPRequestStart: 0;
readonly HTTPRequestChunk: 1;
readonly HTTPRequestEnd: 2;
readonly WSOpen: 3;
readonly WSClose: 4;
readonly WSSendText: 5;
readonly WSSendBinary: 6;
};
export type C2SRequestType = ObjectValues<typeof C2SRequestTypes>;
export declare const S2CRequestTypes: {
readonly HTTPResponseStart: 0;
readonly HTTPResponseChunk: 1;
readonly HTTPResponseEnd: 2;
readonly WSOpen: 3;
readonly WSClose: 4;
readonly WSTextStart: 5;
readonly WSBinaryStart: 6;
readonly WSDataChunk: 7;
readonly WSDataEnd: 8;
readonly WSError: 9;
};
export type S2CRequestType = ObjectValues<typeof S2CRequestTypes>;
export type ProtoBareHeaders = Record<string, string | string[]>;
export type HTTPRequestPayload = {
method: string;
requestHeaders: ProtoBareHeaders;
remote: URL;
hasBody: boolean;
};
export type HTTPResponsePayload = {
status: number;
statusText: string;
headers: ProtoBareHeaders;
};
export type C2SWSOpenPayload = {
url: string;
protocols: string | string[];
};
export type S2CWSOpenPayload = {
protocol: string;
};
export type WSClosePayload = {
code: number;
reason: string;
wasClean: boolean;
};
export type WSErrorPayload = {
message: string;
};
export declare const MAX_CHUNK_SIZE: number;
export declare const S2C_HELLO_OK = ":3";
export declare const C2S_HELLO = "haiii ";
export declare const S2C_HELLO_ERR = ":< ";
export declare const PROTOCOL_VERSION = "3.0";
export { Transport } from "./Transport";

69
dist/protocol.cjs vendored
View file

@ -1,69 +0,0 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// protocol/src/index.ts
var src_exports = {};
__export(src_exports, {
C2SRequestTypes: () => C2SRequestTypes,
C2S_HELLO: () => C2S_HELLO,
MAX_CHUNK_SIZE: () => MAX_CHUNK_SIZE,
PROTOCOL_VERSION: () => PROTOCOL_VERSION,
S2CRequestTypes: () => S2CRequestTypes,
S2C_HELLO_ERR: () => S2C_HELLO_ERR,
S2C_HELLO_OK: () => S2C_HELLO_OK,
Transport: () => Transport
});
module.exports = __toCommonJS(src_exports);
// protocol/src/Transport.ts
var Transport = class {
constructor(onopen, onclose) {
this.onopen = onopen;
this.onclose = onclose;
}
ondata = () => {
};
};
// protocol/src/index.ts
var C2SRequestTypes = {
HTTPRequestStart: 0,
HTTPRequestChunk: 1,
HTTPRequestEnd: 2,
WSOpen: 3,
WSClose: 4,
WSSendText: 5,
WSSendBinary: 6
};
var S2CRequestTypes = {
HTTPResponseStart: 0,
HTTPResponseChunk: 1,
HTTPResponseEnd: 2,
WSOpen: 3,
WSClose: 4,
WSTextStart: 5,
WSBinaryStart: 6,
WSDataChunk: 7,
WSDataEnd: 8,
WSError: 9
};
var MAX_CHUNK_SIZE = 12 * 1024;
var S2C_HELLO_OK = ":3";
var C2S_HELLO = "haiii ";
var S2C_HELLO_ERR = ":< ";
var PROTOCOL_VERSION = "3.0";

47
dist/protocol.mjs vendored
View file

@ -1,47 +0,0 @@
// protocol/src/Transport.ts
var Transport = class {
constructor(onopen, onclose) {
this.onopen = onopen;
this.onclose = onclose;
}
ondata = () => {
};
};
// protocol/src/index.ts
var C2SRequestTypes = {
HTTPRequestStart: 0,
HTTPRequestChunk: 1,
HTTPRequestEnd: 2,
WSOpen: 3,
WSClose: 4,
WSSendText: 5,
WSSendBinary: 6
};
var S2CRequestTypes = {
HTTPResponseStart: 0,
HTTPResponseChunk: 1,
HTTPResponseEnd: 2,
WSOpen: 3,
WSClose: 4,
WSTextStart: 5,
WSBinaryStart: 6,
WSDataChunk: 7,
WSDataEnd: 8,
WSError: 9
};
var MAX_CHUNK_SIZE = 12 * 1024;
var S2C_HELLO_OK = ":3";
var C2S_HELLO = "haiii ";
var S2C_HELLO_ERR = ":< ";
var PROTOCOL_VERSION = "3.0";
export {
C2SRequestTypes,
C2S_HELLO,
MAX_CHUNK_SIZE,
PROTOCOL_VERSION,
S2CRequestTypes,
S2C_HELLO_ERR,
S2C_HELLO_OK,
Transport
};

View file

@ -1,8 +0,0 @@
export declare abstract class Transport {
onopen: () => void;
onclose: () => void;
ondata: (data: ArrayBuffer) => void;
constructor(onopen: () => void, onclose: () => void);
abstract send(data: ArrayBuffer): void;
abstract close(): void;
}

View file

@ -1,57 +0,0 @@
export type ObjectValues<T> = T[keyof T];
export declare const C2SRequestTypes: {
readonly HTTPRequestStart: 0;
readonly HTTPRequestChunk: 1;
readonly HTTPRequestEnd: 2;
readonly WSOpen: 3;
readonly WSClose: 4;
readonly WSSendText: 5;
readonly WSSendBinary: 6;
};
export type C2SRequestType = ObjectValues<typeof C2SRequestTypes>;
export declare const S2CRequestTypes: {
readonly HTTPResponseStart: 0;
readonly HTTPResponseChunk: 1;
readonly HTTPResponseEnd: 2;
readonly WSOpen: 3;
readonly WSClose: 4;
readonly WSTextStart: 5;
readonly WSBinaryStart: 6;
readonly WSDataChunk: 7;
readonly WSDataEnd: 8;
readonly WSError: 9;
};
export type S2CRequestType = ObjectValues<typeof S2CRequestTypes>;
export type ProtoBareHeaders = Record<string, string | string[]>;
export type HTTPRequestPayload = {
method: string;
requestHeaders: ProtoBareHeaders;
remote: URL;
hasBody: boolean;
};
export type HTTPResponsePayload = {
status: number;
statusText: string;
headers: ProtoBareHeaders;
};
export type C2SWSOpenPayload = {
url: string;
protocols: string | string[];
};
export type S2CWSOpenPayload = {
protocol: string;
};
export type WSClosePayload = {
code: number;
reason: string;
wasClean: boolean;
};
export type WSErrorPayload = {
message: string;
};
export declare const MAX_CHUNK_SIZE: number;
export declare const S2C_HELLO_OK = ":3";
export declare const C2S_HELLO = "haiii ";
export declare const S2C_HELLO_ERR = ":< ";
export declare const PROTOCOL_VERSION = "3.0";
export { Transport } from "./Transport";

54
dist/tracker-list.cjs vendored
View file

@ -1,54 +0,0 @@
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// tracker-list/src/index.ts
var src_exports = {};
__export(src_exports, {
default: () => src_default
});
module.exports = __toCommonJS(src_exports);
var trackers = {
"us-central-1": {
firebase: {
apiKey: "AIzaSyCs1LOqsbrAjymIcjvbKxPhFQWXlSPiLTs",
authDomain: "adrift-6c1f6.firebaseapp.com",
projectId: "adrift-6c1f6",
storageBucket: "adrift-6c1f6.appspot.com",
messagingSenderId: "175846512414",
appId: "1:175846512414:web:5c6e06d231ab58e9029b0f",
measurementId: "G-L0P2EF6Q72"
},
tracker: "wss://lb1.mercurywork.shop",
description: "the official central tracker"
},
"rafftracker": {
firebase: {
apiKey: "AIzaSyDkcda0r-gdiJoTQ7EbOL9q7-NBQwiKlPg",
authDomain: "rafftracker.firebaseapp.com",
databaseURL: "https://rafftracker-default-rtdb.firebaseio.com",
projectId: "rafftracker",
storageBucket: "rafftracker.appspot.com",
messagingSenderId: "994948039014",
appId: "1:994948039014:web:f96970aa4f626e969dc8a7",
measurementId: "G-PD96ZKX31D"
},
tracker: "wss://rafftracker.mercurywork.shop",
description: "a second official backup tracker"
}
};
var src_default = trackers;

34
dist/tracker-list.mjs vendored
View file

@ -1,34 +0,0 @@
// tracker-list/src/index.ts
var trackers = {
"us-central-1": {
firebase: {
apiKey: "AIzaSyCs1LOqsbrAjymIcjvbKxPhFQWXlSPiLTs",
authDomain: "adrift-6c1f6.firebaseapp.com",
projectId: "adrift-6c1f6",
storageBucket: "adrift-6c1f6.appspot.com",
messagingSenderId: "175846512414",
appId: "1:175846512414:web:5c6e06d231ab58e9029b0f",
measurementId: "G-L0P2EF6Q72"
},
tracker: "wss://lb1.mercurywork.shop",
description: "the official central tracker"
},
"rafftracker": {
firebase: {
apiKey: "AIzaSyDkcda0r-gdiJoTQ7EbOL9q7-NBQwiKlPg",
authDomain: "rafftracker.firebaseapp.com",
databaseURL: "https://rafftracker-default-rtdb.firebaseio.com",
projectId: "rafftracker",
storageBucket: "rafftracker.appspot.com",
messagingSenderId: "994948039014",
appId: "1:994948039014:web:f96970aa4f626e969dc8a7",
measurementId: "G-PD96ZKX31D"
},
tracker: "wss://rafftracker.mercurywork.shop",
description: "a second official backup tracker"
}
};
var src_default = trackers;
export {
src_default as default
};

View file

@ -1,21 +0,0 @@
// vite.config.js
import { defineConfig } from "file:///home/ce/Documents/GitHub/adrift/node_modules/.pnpm/vite@4.4.9/node_modules/vite/dist/node/index.js";
import { svelte } from "file:///home/ce/Documents/GitHub/adrift/node_modules/.pnpm/@sveltejs+vite-plugin-svelte@2.4.5_svelte@4.2.0_vite@4.4.9/node_modules/@sveltejs/vite-plugin-svelte/src/index.js";
import { viteSingleFile } from "file:///home/ce/Documents/GitHub/adrift/node_modules/.pnpm/github.com+CoolElectronics+vite-plugin-singlefile@0d528cf28b80545b7423150252fd18e7efd8a5e3_ro_mhfpd7pl55om7n5r5r2q4keutu/node_modules/vite-plugin-singlefile/dist/esm/index.js";
var vite_config_default = defineConfig({
plugins: [
svelte({}),
process.env.VITE_ADRIFT_SINGLEFILE && viteSingleFile()
],
build: {
dev: true,
minify: false,
target: "esnext",
outDir: "dist",
sourcemap: true
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvaG9tZS9jZS9Eb2N1bWVudHMvR2l0SHViL2FkcmlmdC9mcm9udGVuZFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL2hvbWUvY2UvRG9jdW1lbnRzL0dpdEh1Yi9hZHJpZnQvZnJvbnRlbmQvdml0ZS5jb25maWcuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL2hvbWUvY2UvRG9jdW1lbnRzL0dpdEh1Yi9hZHJpZnQvZnJvbnRlbmQvdml0ZS5jb25maWcuanNcIjtpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgeyBzdmVsdGUgfSBmcm9tIFwiQHN2ZWx0ZWpzL3ZpdGUtcGx1Z2luLXN2ZWx0ZVwiXG5pbXBvcnQgeyB2aXRlU2luZ2xlRmlsZSB9IGZyb20gXCJ2aXRlLXBsdWdpbi1zaW5nbGVmaWxlXCJcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcGx1Z2luczogW1xuICAgIHN2ZWx0ZSh7XG5cbiAgICB9KSxcbiAgICBwcm9jZXNzLmVudi5WSVRFX0FEUklGVF9TSU5HTEVGSUxFICYmIHZpdGVTaW5nbGVGaWxlKClcbiAgXSxcbiAgYnVpbGQ6IHtcbiAgICBkZXY6IHRydWUsXG4gICAgbWluaWZ5OiBmYWxzZSxcbiAgICB0YXJnZXQ6IFwiZXNuZXh0XCIsXG4gICAgb3V0RGlyOiBcImRpc3RcIixcbiAgICBzb3VyY2VtYXA6IHRydWUsXG4gIH1cbn0pXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQTZTLFNBQVMsb0JBQW9CO0FBQzFVLFNBQVMsY0FBYztBQUN2QixTQUFTLHNCQUFzQjtBQUUvQixJQUFPLHNCQUFRLGFBQWE7QUFBQSxFQUMxQixTQUFTO0FBQUEsSUFDUCxPQUFPLENBRVAsQ0FBQztBQUFBLElBQ0QsUUFBUSxJQUFJLDBCQUEwQixlQUFlO0FBQUEsRUFDdkQ7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSLFdBQVc7QUFBQSxFQUNiO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K

View file

@ -1,26 +0,0 @@
// vite.config.js
import { defineConfig } from "file:///home/ce/Documents/GitHub/adrift/node_modules/.pnpm/vite@4.4.9/node_modules/vite/dist/node/index.js";
import { svelte } from "file:///home/ce/Documents/GitHub/adrift/node_modules/.pnpm/@sveltejs+vite-plugin-svelte@2.4.5_svelte@4.2.0_vite@4.4.9/node_modules/@sveltejs/vite-plugin-svelte/src/index.js";
import { viteSingleFile } from "file:///home/ce/Documents/GitHub/adrift/node_modules/.pnpm/github.com+CoolElectronics+vite-plugin-singlefile@0d528cf28b80545b7423150252fd18e7efd8a5e3_ro_mhfpd7pl55om7n5r5r2q4keutu/node_modules/vite-plugin-singlefile/dist/esm/index.js";
var vite_config_default = defineConfig({
plugins: [
svelte({}),
process.env.VITE_ADRIFT_SINGLEFILE && viteSingleFile()
],
build: {
dev: true,
minify: false,
target: "esnext",
outDir: "dist",
sourcemap: true,
rollupOptions: {
external: [
"./sw.js"
]
}
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvaG9tZS9jZS9Eb2N1bWVudHMvR2l0SHViL2FkcmlmdC9mcm9udGVuZFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL2hvbWUvY2UvRG9jdW1lbnRzL0dpdEh1Yi9hZHJpZnQvZnJvbnRlbmQvdml0ZS5jb25maWcuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL2hvbWUvY2UvRG9jdW1lbnRzL0dpdEh1Yi9hZHJpZnQvZnJvbnRlbmQvdml0ZS5jb25maWcuanNcIjtpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiXG5pbXBvcnQgeyBzdmVsdGUgfSBmcm9tIFwiQHN2ZWx0ZWpzL3ZpdGUtcGx1Z2luLXN2ZWx0ZVwiXG5pbXBvcnQgeyB2aXRlU2luZ2xlRmlsZSB9IGZyb20gXCJ2aXRlLXBsdWdpbi1zaW5nbGVmaWxlXCJcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcGx1Z2luczogW1xuICAgIHN2ZWx0ZSh7XG5cbiAgICB9KSxcbiAgICBwcm9jZXNzLmVudi5WSVRFX0FEUklGVF9TSU5HTEVGSUxFICYmIHZpdGVTaW5nbGVGaWxlKClcbiAgXSxcbiAgYnVpbGQ6IHtcbiAgICBkZXY6IHRydWUsXG4gICAgbWluaWZ5OiBmYWxzZSxcbiAgICB0YXJnZXQ6IFwiZXNuZXh0XCIsXG4gICAgb3V0RGlyOiBcImRpc3RcIixcbiAgICBzb3VyY2VtYXA6IHRydWUsXG4gICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgZXh0ZXJuYWw6IFtcbiAgICAgICAgXCIuL3N3LmpzXCJcbiAgICAgIF1cbiAgICB9XG4gIH1cbn0pXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQTZTLFNBQVMsb0JBQW9CO0FBQzFVLFNBQVMsY0FBYztBQUN2QixTQUFTLHNCQUFzQjtBQUUvQixJQUFPLHNCQUFRLGFBQWE7QUFBQSxFQUMxQixTQUFTO0FBQUEsSUFDUCxPQUFPLENBRVAsQ0FBQztBQUFBLElBQ0QsUUFBUSxJQUFJLDBCQUEwQixlQUFlO0FBQUEsRUFDdkQ7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSLFdBQVc7QUFBQSxJQUNYLGVBQWU7QUFBQSxNQUNiLFVBQVU7QUFBQSxRQUNSO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K