π File detail
components/hooks/SelectMatcherMode.tsx
π§© .tsxπ 144 linesπΎ 14,809 bytesπ text
β Back to All Filesπ― Use case
This file lives under βcomponents/β, which covers shared React UI pieces. On the API surface it exposes SelectMatcherMode β mainly types, interfaces, or factory objects. Dependencies touch React UI and src. It composes internal code from ink, utils, CustomSelect, and design-system (relative imports).
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
import { c as _c } from "react/compiler-runtime"; /** * SelectMatcherMode shows the configured matchers for a selected hook event. * * The /hooks menu is read-only: this view no longer offers "add new matcher"
π€ Exports (heuristic)
SelectMatcherMode
π External import roots
Package roots from from "β¦" (relative paths omitted).
reactsrc
π₯οΈ Source preview
import { c as _c } from "react/compiler-runtime";
/**
* SelectMatcherMode shows the configured matchers for a selected hook event.
*
* The /hooks menu is read-only: this view no longer offers "add new matcher"
* and simply lets the user drill into each matcher to see its hooks.
*/
import * as React from 'react';
import type { HookEvent } from 'src/entrypoints/agentSdkTypes.js';
import { Box, Text } from '../../ink.js';
import { type HookSource, hookSourceInlineDisplayString, type IndividualHookConfig } from '../../utils/hooks/hooksSettings.js';
import { plural } from '../../utils/stringUtils.js';
import { Select } from '../CustomSelect/select.js';
import { Dialog } from '../design-system/Dialog.js';
type MatcherWithSource = {
matcher: string;
sources: HookSource[];
hookCount: number;
};
type Props = {
selectedEvent: HookEvent;
matchersForSelectedEvent: string[];
hooksByEventAndMatcher: Record<HookEvent, Record<string, IndividualHookConfig[]>>;
eventDescription: string;
onSelect: (matcher: string) => void;
onCancel: () => void;
};
export function SelectMatcherMode(t0) {
const $ = _c(25);
const {
selectedEvent,
matchersForSelectedEvent,
hooksByEventAndMatcher,
eventDescription,
onSelect,
onCancel
} = t0;
let t1;
if ($[0] !== hooksByEventAndMatcher || $[1] !== matchersForSelectedEvent || $[2] !== selectedEvent) {
let t2;
if ($[4] !== hooksByEventAndMatcher || $[5] !== selectedEvent) {
t2 = matcher => {
const hooks = hooksByEventAndMatcher[selectedEvent]?.[matcher] || [];
const sources = Array.from(new Set(hooks.map(_temp)));
return {
matcher,
sources,
hookCount: hooks.length
};
};
$[4] = hooksByEventAndMatcher;
$[5] = selectedEvent;
$[6] = t2;
} else {
t2 = $[6];
}
t1 = matchersForSelectedEvent.map(t2);
$[0] = hooksByEventAndMatcher;
$[1] = matchersForSelectedEvent;
$[2] = selectedEvent;
$[3] = t1;
} else {
t1 = $[3];
}
const matchersWithSources = t1;
if (matchersForSelectedEvent.length === 0) {
const t2 = `${selectedEvent} - Matchers`;
let t3;
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
t3 = <Box flexDirection="column" gap={1}><Text dimColor={true}>No hooks configured for this event.</Text><Text dimColor={true}>To add hooks, edit settings.json directly or ask Claude.</Text></Box>;
$[7] = t3;
} else {
t3 = $[7];
}
let t4;
if ($[8] !== eventDescription || $[9] !== onCancel || $[10] !== t2) {
t4 = <Dialog title={t2} subtitle={eventDescription} onCancel={onCancel} inputGuide={_temp2}>{t3}</Dialog>;
$[8] = eventDescription;
$[9] = onCancel;
$[10] = t2;
$[11] = t4;
} else {
t4 = $[11];
}
return t4;
}
const t2 = `${selectedEvent} - Matchers`;
let t3;
if ($[12] !== matchersWithSources) {
t3 = matchersWithSources.map(_temp3);
$[12] = matchersWithSources;
$[13] = t3;
} else {
t3 = $[13];
}
let t4;
if ($[14] !== onSelect) {
t4 = value => {
onSelect(value);
};
$[14] = onSelect;
$[15] = t4;
} else {
t4 = $[15];
}
let t5;
if ($[16] !== onCancel || $[17] !== t3 || $[18] !== t4) {
t5 = <Box flexDirection="column"><Select options={t3} onChange={t4} onCancel={onCancel} /></Box>;
$[16] = onCancel;
$[17] = t3;
$[18] = t4;
$[19] = t5;
} else {
t5 = $[19];
}
let t6;
if ($[20] !== eventDescription || $[21] !== onCancel || $[22] !== t2 || $[23] !== t5) {
t6 = <Dialog title={t2} subtitle={eventDescription} onCancel={onCancel}>{t5}</Dialog>;
$[20] = eventDescription;
$[21] = onCancel;
$[22] = t2;
$[23] = t5;
$[24] = t6;
} else {
t6 = $[24];
}
return t6;
}
function _temp3(item) {
const sourceText = item.sources.map(hookSourceInlineDisplayString).join(", ");
const matcherLabel = item.matcher || "(all)";
return {
label: `[${sourceText}] ${matcherLabel}`,
value: item.matcher,
description: `${item.hookCount} ${plural(item.hookCount, "hook")}`
};
}
function _temp2() {
return <Text>Esc to go back</Text>;
}
function _temp(h) {
return h.source;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkhvb2tFdmVudCIsIkJveCIsIlRleHQiLCJIb29rU291cmNlIiwiaG9va1NvdXJjZUlubGluZURpc3BsYXlTdHJpbmciLCJJbmRpdmlkdWFsSG9va0NvbmZpZyIsInBsdXJhbCIsIlNlbGVjdCIsIkRpYWxvZyIsIk1hdGNoZXJXaXRoU291cmNlIiwibWF0Y2hlciIsInNvdXJjZXMiLCJob29rQ291bnQiLCJQcm9wcyIsInNlbGVjdGVkRXZlbnQiLCJtYXRjaGVyc0ZvclNlbGVjdGVkRXZlbnQiLCJob29rc0J5RXZlbnRBbmRNYXRjaGVyIiwiUmVjb3JkIiwiZXZlbnREZXNjcmlwdGlvbiIsIm9uU2VsZWN0Iiwib25DYW5jZWwiLCJTZWxlY3RNYXRjaGVyTW9kZSIsInQwIiwiJCIsIl9jIiwidDEiLCJ0MiIsImhvb2tzIiwiQXJyYXkiLCJmcm9tIiwiU2V0IiwibWFwIiwiX3RlbXAiLCJsZW5ndGgiLCJtYXRjaGVyc1dpdGhTb3VyY2VzIiwidDMiLCJTeW1ib2wiLCJmb3IiLCJ0NCIsIl90ZW1wMiIsIl90ZW1wMyIsInZhbHVlIiwidDUiLCJ0NiIsIml0ZW0iLCJzb3VyY2VUZXh0Iiwiam9pbiIsIm1hdGNoZXJMYWJlbCIsImxhYmVsIiwiZGVzY3JpcHRpb24iLCJoIiwic291cmNlIl0sInNvdXJjZXMiOlsiU2VsZWN0TWF0Y2hlck1vZGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VsZWN0TWF0Y2hlck1vZGUgc2hvd3MgdGhlIGNvbmZpZ3VyZWQgbWF0Y2hlcnMgZm9yIGEgc2VsZWN0ZWQgaG9vayBldmVudC5cbiAqXG4gKiBUaGUgL2hvb2tzIG1lbnUgaXMgcmVhZC1vbmx5OiB0aGlzIHZpZXcgbm8gbG9uZ2VyIG9mZmVycyBcImFkZCBuZXcgbWF0Y2hlclwiXG4gKiBhbmQgc2ltcGx5IGxldHMgdGhlIHVzZXIgZHJpbGwgaW50byBlYWNoIG1hdGNoZXIgdG8gc2VlIGl0cyBob29rcy5cbiAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IEhvb2tFdmVudCB9IGZyb20gJ3NyYy9lbnRyeXBvaW50cy9hZ2VudFNka1R5cGVzLmpzJ1xuaW1wb3J0IHsgQm94LCBUZXh0IH0gZnJvbSAnLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHtcbiAgdHlwZSBIb29rU291cmNlLFxuICBob29rU291cmNlSW5saW5lRGlzcGxheVN0cmluZyxcbiAgdHlwZSBJbmRpdmlkdWFsSG9va0NvbmZpZyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvaG9va3MvaG9va3NTZXR0aW5ncy5qcydcbmltcG9ydCB7IHBsdXJhbCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZ1V0aWxzLmpzJ1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnLi4vQ3VzdG9tU2VsZWN0L3NlbGVjdC5qcydcbmltcG9ydCB7IERpYWxvZyB9IGZyb20gJy4uL2Rlc2lnbi1zeXN0ZW0vRGlhbG9nLmpzJ1xuXG50eXBlIE1hdGNoZXJXaXRoU291cmNlID0ge1xuICBtYXRjaGVyOiBzdHJpbmdcbiAgc291cmNlczogSG9va1NvdXJjZVtdXG4gIGhvb2tDb3VudDogbnVtYmVyXG59XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHNlbGVjdGVkRXZlbnQ6IEhvb2tFdmVudFxuICBtYXRjaGVyc0ZvclNlbGVjdGVkRXZlbnQ6IHN0cmluZ1tdXG4gIGhvb2tzQnlFdmVudEFuZE1hdGNoZXI6IFJlY29yZDxcbiAgICBIb29rRXZlbnQsXG4gICAgUmVjb3JkPHN0cmluZywgSW5kaXZpZHVhbEhvb2tDb25maWdbXT5cbiAgPlxuICBldmVudERlc2NyaXB0aW9uOiBzdHJpbmdcbiAgb25TZWxlY3Q6IChtYXRjaGVyOiBzdHJpbmcpID0+IHZvaWRcbiAgb25DYW5jZWw6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdE1hdGNoZXJNb2RlKHtcbiAgc2VsZWN0ZWRFdmVudCxcbiAgbWF0Y2hlcnNGb3JTZWxlY3RlZEV2ZW50LFxuICBob29rc0J5RXZlbnRBbmRNYXRjaGVyLFxuICBldmVudERlc2NyaXB0aW9uLFxuICBvblNlbGVjdCxcbiAgb25DYW5jZWwsXG59OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIC8vIEdyb3VwIG1hdGNoZXJzIHdpdGggdGhlaXIgc291cmNlcyAoYWxyZWFkeSBzb3J0ZWQgYnkgcHJpb3JpdHkgaW4gcGFyZW50KVxuICBjb25zdCBtYXRjaGVyc1dpdGhTb3VyY2VzOiBNYXRjaGVyV2l0aFNvdXJjZVtdID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIG1hdGNoZXJzRm9yU2VsZWN0ZWRFdmVudC5tYXAobWF0Y2hlciA9PiB7XG4gICAgICBjb25zdCBob29rcyA9IGhvb2tzQnlFdmVudEFuZE1hdGNoZXJbc2VsZWN0ZWRFdmVudF0/LlttYXRjaGVyXSB8fCBbXVxuICAgICAgY29uc3Qgc291cmNlcyA9IEFycmF5LmZyb20obmV3IFNldChob29rcy5tYXAoaCA9PiBoLnNvdXJjZSkpKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2hlcixcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgaG9va0NvdW50OiBob29rcy5sZW5ndGgsXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW21hdGNoZXJzRm9yU2VsZWN0ZWRFdmVudCwgaG9va3NCeUV2ZW50QW5kTWF0Y2hlciwgc2VsZWN0ZWRFdmVudF0pXG5cbiAgaWYgKG1hdGNoZXJzRm9yU2VsZWN0ZWRFdmVudC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ1xuICAgICAgICB0aXRsZT17YCR7c2VsZWN0ZWRFdmVudH0gLSBNYXRjaGVyc2B9XG4gICAgICAgIHN1YnRpdGxlPXtldmVudERlc2NyaXB0aW9ufVxuICAgICAgICBvbkNhbmNlbD17b25DYW5jZWx9XG4gICAgICAgIGlucHV0R3VpZGU9eygpID0+IDxUZXh0PkVzYyB0byBnbyBiYWNrPC9UZXh0Pn1cbiAgICAgID5cbiAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgZ2FwPXsxfT5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5ObyBob29rcyBjb25maWd1cmVkIGZvciB0aGlzIGV2ZW50LjwvVGV4dD5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgIFRvIGFkZCBob29rcywgZWRpdCBzZXR0aW5ncy5qc29uIGRpcmVjdGx5IG9yIGFzayBDbGF1ZGUuXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRGlhbG9nPlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1xuICAgICAgdGl0bGU9e2Ake3NlbGVjdGVkRXZlbnR9IC0gTWF0Y2hlcnNgfVxuICAgICAgc3VidGl0bGU9e2V2ZW50RGVzY3JpcHRpb259XG4gICAgICBvbkNhbmNlbD17b25DYW5jZWx9XG4gICAgPlxuICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBvcHRpb25zPXttYXRjaGVyc1dpdGhTb3VyY2VzLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVRleHQgPSBpdGVtLnNvdXJjZXNcbiAgICAgICAgICAgICAgLm1hcChob29rU291cmNlSW5saW5lRGlzcGxheVN0cmluZylcbiAgICAgICAgICAgICAgLmpvaW4oJywgJylcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXJMYWJlbCA9IGl0ZW0ubWF0Y2hlciB8fCAnKGFsbCknXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBsYWJlbDogYFske3NvdXJjZVRleHR9XSAke21hdGNoZXJMYWJlbH1gLFxuICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5tYXRjaGVyLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7aXRlbS5ob29rQ291bnR9ICR7cGx1cmFsKGl0ZW0uaG9va0NvdW50LCAnaG9vaycpfWAsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHtcbiAgICAgICAgICAgIG9uU2VsZWN0KHZhbHVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2FuY2VsfVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC9EaWFsb2c+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFDOUIsY0FBY0MsU0FBUyxRQUFRLGtDQUFrQztBQUNqRSxTQUFTQyxHQUFHLEVBQUVDLElBQUksUUFBUSxjQUFjO0FBQ3hDLFNBQ0UsS0FBS0MsVUFBVSxFQUNmQyw2QkFBNkIsRUFDN0IsS0FBS0Msb0JBQW9CLFFBQ3BCLG9DQUFvQztBQUMzQyxTQUFTQyxNQUFNLFFBQVEsNEJBQTRCO0FBQ25ELFNBQVNDLE1BQU0sUUFBUSwyQkFBMkI7QUFDbEQsU0FBU0MsTUFBTSxRQUFRLDRCQUE0QjtBQUVuRCxLQUFLQyxpQkFBaUIsR0FBRztFQUN2QkMsT0FBTyxFQUFFLE1BQU07RUFDZkMsT0FBTyxFQUFFUixVQUFVLEVBQUU7RUFDckJTLFNBQVMsRUFBRSxNQUFNO0FBQ25CLENBQUM7QUFFRCxLQUFLQyxLQUFLLEdBQUc7RUFDWEMsYUFBYSxFQUFFZCxTQUFTO0VBQ3hCZSx3QkFBd0IsRUFBRSxNQUFNLEVBQUU7RUFDbENDLHNCQUFzQixFQUFFQyxNQUFNLENBQzVCakIsU0FBUyxFQUNUaUIsTUFBTSxDQUFDLE1BQU0sRUFBRVosb0JBQW9CLEVBQUUsQ0FBQyxDQUN2QztFQUNEYSxnQkFBZ0IsRUFBRSxNQUFNO0VBQ3hCQyxRQUFRLEVBQUUsQ0FBQ1QsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUk7RUFDbkNVLFFBQVEsRUFBRSxHQUFHLEdBQUcsSUFBSTtBQUN0QixDQUFDO0FBRUQsT0FBTyxTQUFBQyxrQkFBQUMsRUFBQTtFQUFBLE1BQUFDLENBQUEsR0FBQUMsRUFBQTtFQUEyQjtJQUFBVixhQUFBO0lBQUFDLHdCQUFBO0lBQUFDLHNCQUFBO0lBQUFFLGdCQUFBO0lBQUFDLFFBQUE7SUFBQUM7RUFBQSxJQUFBRSxFQU8xQjtFQUFBLElBQUFHLEVBQUE7RUFBQSxJQUFBRixDQUFBLFFBQUFQLHNCQUFBLElBQUFPLENBQUEsUUFBQVIsd0JBQUEsSUFBQVEsQ0FBQSxRQUFBVCxhQUFBO0lBQUEsSUFBQVksRUFBQTtJQUFBLElBQUFILENBQUEsUUFBQVAsc0JBQUEsSUFBQU8sQ0FBQSxRQUFBVCxhQUFBO01BR2dDWSxFQUFBLEdBQUFoQixPQUFBO1FBQ2xDLE1BQUFpQixLQUFBLEdBQWNYLHNCQUFzQixDQUFDRixhQUFhLENBQVksR0FBUkosT0FBTyxDQUFPLElBQXRELEVBQXNEO1FBQ3BFLE1BQUFDLE9BQUEsR0FBZ0JpQixLQUFLLENBQUFDLElBQUssQ0FBQyxJQUFJQyxHQUFHLENBQUNILEtBQUssQ0FBQUksR0FBSSxDQUFDQyxLQUFhLENBQUMsQ0FBQyxDQUFDO1FBQUEsT0FDdEQ7VUFBQXRCLE9BQUE7VUFBQUMsT0FBQTtVQUFBQyxTQUFBLEVBR01lLEtBQUssQ0FBQU07UUFDbEIsQ0FBQztNQUFBLENBQ0Y7TUFBQVYsQ0FBQSxNQUFBUCxzQkFBQTtNQUFBTyxDQUFBLE1BQUFULGFBQUE7TUFBQVMsQ0FBQSxNQUFBRyxFQUFBO0lBQUE7TUFBQUEsRUFBQSxHQUFBSCxDQUFBO0lBQUE7SUFSTUUsRUFBQSxHQUFBVix3QkFBd0IsQ0FBQWdCLEdBQUksQ0FBQ0wsRUFRbkMsQ0FBQztJQUFBSCxDQUFBLE1BQUFQLHNCQUFBO0lBQUFPLENBQUEsTUFBQVIsd0JBQUE7SUFBQVEsQ0FBQSxNQUFBVCxhQUFBO0lBQUFTLENBQUEsTUFBQUUsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQUYsQ0FBQTtFQUFBO0VBVEosTUFBQVcsbUJBQUEsR0FDRVQsRUFRRTtFQUdKLElBQUlWLHdCQUF3QixDQUFBa0IsTUFBTyxLQUFLLENBQUM7SUFHNUIsTUFBQVAsRUFBQSxNQUFHWixhQUFhLGFBQWE7SUFBQSxJQUFBcUIsRUFBQTtJQUFBLElBQUFaLENBQUEsUUFBQWEsTUFBQSxDQUFBQyxHQUFBO01BS3BDRixFQUFBLElBQUMsR0FBRyxDQUFlLGFBQVEsQ0FBUixRQUFRLENBQU0sR0FBQyxDQUFELEdBQUMsQ0FDaEMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFSLEtBQU8sQ0FBQyxDQUFDLG1DQUFtQyxFQUFqRCxJQUFJLENBQ0wsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFSLEtBQU8sQ0FBQyxDQUFDLHdEQUVmLEVBRkMsSUFBSSxDQUdQLEVBTEMsR0FBRyxDQUtFO01BQUFaLENBQUEsTUFBQVksRUFBQTtJQUFBO01BQUFBLEVBQUEsR0FBQVosQ0FBQTtJQUFBO0lBQUEsSUFBQWUsRUFBQTtJQUFBLElBQUFmLENBQUEsUUFBQUwsZ0JBQUEsSUFBQUssQ0FBQSxRQUFBSCxRQUFBLElBQUFHLENBQUEsU0FBQUcsRUFBQTtNQVhSWSxFQUFBLElBQUMsTUFBTSxDQUNFLEtBQTZCLENBQTdCLENBQUFaLEVBQTRCLENBQUMsQ0FDMUJSLFFBQWdCLENBQWhCQSxpQkFBZSxDQUFDLENBQ2hCRSxRQUFRLENBQVJBLFNBQU8sQ0FBQyxDQUNOLFVBQWlDLENBQWpDLENBQUFtQixNQUFnQyxDQUFDLENBRTdDLENBQUFKLEVBS0ssQ0FDUCxFQVpDLE1BQU0sQ0FZRTtNQUFBWixDQUFBLE1BQUFMLGdCQUFBO01BQUFLLENBQUEsTUFBQUgsUUFBQTtNQUFBRyxDQUFBLE9BQUFHLEVBQUE7TUFBQUgsQ0FBQSxPQUFBZSxFQUFBO0lBQUE7TUFBQUEsRUFBQSxHQUFBZixDQUFBO0lBQUE7SUFBQSxPQVpUZSxFQVlTO0VBQUE7RUFNRixNQUFBWixFQUFBLE1BQUdaLGFBQWEsYUFBYTtFQUFBLElBQUFxQixFQUFBO0VBQUEsSUFBQVosQ0FBQSxTQUFBVyxtQkFBQTtJQU12QkMsRUFBQSxHQUFBRCxtQkFBbUIsQ0FBQUgsR0FBSSxDQUFDUyxNQVVoQyxDQUFDO0lBQUFqQixDQUFBLE9BQUFXLG1CQUFBO0lBQUFYLENBQUEsT0FBQVksRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQVosQ0FBQTtFQUFBO0VBQUEsSUFBQWUsRUFBQTtFQUFBLElBQUFmLENBQUEsU0FBQUosUUFBQTtJQUNRbUIsRUFBQSxHQUFBRyxLQUFBO01BQ1J0QixRQUFRLENBQUNzQixLQUFLLENBQUM7SUFBQSxDQUNoQjtJQUFBbEIsQ0FBQSxPQUFBSixRQUFBO0lBQUFJLENBQUEsT0FBQWUsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQWYsQ0FBQTtFQUFBO0VBQUEsSUFBQW1CLEVBQUE7RUFBQSxJQUFBbkIsQ0FBQSxTQUFBSCxRQUFBLElBQUFHLENBQUEsU0FBQVksRUFBQSxJQUFBWixDQUFBLFNBQUFlLEVBQUE7SUFmTEksRUFBQSxJQUFDLEdBQUcsQ0FBZSxhQUFRLENBQVIsUUFBUSxDQUN6QixDQUFDLE1BQU0sQ0FDSSxPQVVQLENBVk8sQ0FBQVAsRUFVUixDQUFDLENBQ1EsUUFFVCxDQUZTLENBQUFHLEVBRVYsQ0FBQyxDQUNTbEIsUUFBUSxDQUFSQSxTQUFPLENBQUMsR0FFdEIsRUFsQkMsR0FBRyxDQWtCRTtJQUFBRyxDQUFBLE9BQUFILFFBQUE7SUFBQUcsQ0FBQSxPQUFBWSxFQUFBO0lBQUFaLENBQUEsT0FBQWUsRUFBQTtJQUFBZixDQUFBLE9BQUFtQixFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBbkIsQ0FBQTtFQUFBO0VBQUEsSUFBQW9CLEVBQUE7RUFBQSxJQUFBcEIsQ0FBQSxTQUFBTCxnQkFBQSxJQUFBSyxDQUFBLFNBQUFILFFBQUEsSUFBQUcsQ0FBQSxTQUFBRyxFQUFBLElBQUFILENBQUEsU0FBQW1CLEVBQUE7SUF2QlJDLEVBQUEsSUFBQyxNQUFNLENBQ0UsS0FBNkIsQ0FBN0IsQ0FBQWpCLEVBQTRCLENBQUMsQ0FDMUJSLFFBQWdCLENBQWhCQSxpQkFBZSxDQUFDLENBQ2hCRSxRQUFRLENBQVJBLFNBQU8sQ0FBQyxDQUVsQixDQUFBc0IsRUFrQkssQ0FDUCxFQXhCQyxNQUFNLENBd0JFO0lBQUFuQixDQUFBLE9BQUFMLGdCQUFBO0lBQUFLLENBQUEsT0FBQUgsUUFBQTtJQUFBRyxDQUFBLE9BQUFHLEVBQUE7SUFBQUgsQ0FBQSxPQUFBbUIsRUFBQTtJQUFBbkIsQ0FBQSxPQUFBb0IsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQXBCLENBQUE7RUFBQTtFQUFBLE9BeEJUb0IsRUF3QlM7QUFBQTtBQWhFTixTQUFBSCxPQUFBSSxJQUFBO0VBZ0RLLE1BQUFDLFVBQUEsR0FBbUJELElBQUksQ0FBQWpDLE9BQVEsQ0FBQW9CLEdBQ3pCLENBQUMzQiw2QkFBNkIsQ0FBQyxDQUFBMEMsSUFDOUIsQ0FBQyxJQUFJLENBQUM7RUFDYixNQUFBQyxZQUFBLEdBQXFCSCxJQUFJLENBQUFsQyxPQUFtQixJQUF2QixPQUF1QjtFQUFBLE9BQ3JDO0lBQUFzQyxLQUFBLEVBQ0UsSUFBSUgsVUFBVSxLQUFLRSxZQUFZLEVBQUU7SUFBQU4sS0FBQSxFQUNqQ0csSUFBSSxDQUFBbEMsT0FBUTtJQUFBdUMsV0FBQSxFQUNOLEdBQUdMLElBQUksQ0FBQWhDLFNBQVUsSUFBSU4sTUFBTSxDQUFDc0MsSUFBSSxDQUFBaEMsU0FBVSxFQUFFLE1BQU0sQ0FBQztFQUNsRSxDQUFDO0FBQUE7QUF4RE4sU0FBQTJCLE9BQUE7RUFBQSxPQTJCbUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFuQixJQUFJLENBQXNCO0FBQUE7QUEzQjlDLFNBQUFQLE1BQUFrQixDQUFBO0VBQUEsT0FZaURBLENBQUMsQ0FBQUMsTUFBTztBQUFBIiwiaWdub3JlTGlzdCI6W119