@osdk/maker 0.12.0-beta.8 → 0.12.0-beta.9
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/CHANGELOG.md +10 -0
- package/README.md +88 -62
- package/build/browser/api/defineAction.js +91 -78
- package/build/browser/api/defineAction.js.map +1 -1
- package/build/browser/api/defineLink.js +2 -2
- package/build/browser/api/defineLink.js.map +1 -1
- package/build/browser/api/defineObject.js +6 -2
- package/build/browser/api/defineObject.js.map +1 -1
- package/build/browser/api/defineOntology.js +2 -2
- package/build/browser/api/defineOntology.js.map +1 -1
- package/build/browser/api/overall.test.js +1123 -452
- package/build/browser/api/overall.test.js.map +1 -1
- package/build/browser/api/types.js.map +1 -1
- package/build/browser/cli/main.js +1 -1
- package/build/browser/index.js.map +1 -1
- package/build/cjs/index.cjs +100 -84
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +23 -14
- package/build/esm/api/defineAction.js +91 -78
- package/build/esm/api/defineAction.js.map +1 -1
- package/build/esm/api/defineLink.js +2 -2
- package/build/esm/api/defineLink.js.map +1 -1
- package/build/esm/api/defineObject.js +6 -2
- package/build/esm/api/defineObject.js.map +1 -1
- package/build/esm/api/defineOntology.js +2 -2
- package/build/esm/api/defineOntology.js.map +1 -1
- package/build/esm/api/overall.test.js +1123 -452
- package/build/esm/api/overall.test.js.map +1 -1
- package/build/esm/api/types.js.map +1 -1
- package/build/esm/cli/main.js +1 -1
- package/build/esm/index.js.map +1 -1
- package/build/types/api/defineAction.d.ts +6 -6
- package/build/types/api/defineAction.d.ts.map +1 -1
- package/build/types/api/defineObject.d.ts +2 -2
- package/build/types/api/defineObject.d.ts.map +1 -1
- package/build/types/api/types.d.ts +15 -6
- package/build/types/api/types.d.ts.map +1 -1
- package/build/types/index.d.ts +1 -1
- package/build/types/index.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overall.test.js","names":["fs","path","fileURLToPath","beforeEach","describe","expect","it","addDependency","defineAction","defineCreateInterfaceObjectAction","defineCreateObjectAction","defineDeleteObjectAction","defineModifyInterfaceObjectAction","defineModifyObjectAction","importSharedPropertyType","defineInterface","defineInterfaceLinkConstraint","defineLink","defineObject","defineOntology","dumpOntologyFullMetadata","dumpValueTypeWireType","defineSharedPropertyType","defineValueType","importOntologyEntity","OntologyEntityTypeEnum","apiName","displayName","type","constraints","constraint","version","toThrowErrorMatchingInlineSnapshot","testStringValueType","description","length","minSize","maxSize","failureMessage","message","titlePropertyApiName","pluralDisplayName","primaryKeyPropertyApiName","properties","valueType","ontology","objectPropertyType","blockData","objectTypes","objectType","propertyTypes","toEqual","dataConstraints","toBeDefined","propertyTypeConstraints","toHaveLength","constraintWrapper","toBe","string","toMatchInlineSnapshot","result","displayMetadata","foo","parentInterface","property1","property2","extends","required","propertyDefinition","searchable","a","b","not","toBeUndefined","from","toOne","toMany","fooSpt","icon","color","locator","structDefinition","fieldType","undefined","spt","isLongText","supportsEfficientLeadingWildcard","supportsExactMatching","status","active","experimental","deadline","deprecated","sample","implementsInterfaces","implements","propertyMapping","interfaceProperty","mapsTo","array","lat","lng","object","otherObject","one","metadata","manyForeignKeyProperty","many","datasource","retentionPeriod","editOnly","markingType","markingInputGroupName","classificationConstraint","datasources","dataSecurity","markingGroupName","rules","addInterfaceRule","interfaceApiName","objectTypeParameter","sharedPropertyValues","parameters","id","validation","allowedValues","exampleStructPropertyType","simpleProperty","mySpt","exampleInterface","exampleObjectType","addOrModifyObjectRuleV2","objectToModify","propertyValues","parameterId","structFieldValues","modifyObjectRule","defaultVisibility","conditionalOverrides","condition","conditions","name","matches","staticValue","interfaceTypes","toThrowError","sampleObject","typeClasses","comparison","operator","left","userProperty","userId","currentUser","propertyValue","organizationMarkingIds","right","stringList","strings","objectWithArrays","packageName","typeHint","nonNameSpacedApiName","__type","SHARED_PROPERTY_TYPE","generatedDir","resolve","join","__dirname","myInterface","readFileSync","rmSync","recursive","force","iProperty1","childInterface","iProperty2","import","meta","url","packageJson","JSON","parse","toContain"],"sources":["overall.test.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { beforeEach, describe, expect, it } from \"vitest\";\nimport { addDependency } from \"./addDependency.js\";\nimport {\n defineAction,\n defineCreateInterfaceObjectAction,\n defineCreateObjectAction,\n defineDeleteObjectAction,\n defineModifyInterfaceObjectAction,\n defineModifyObjectAction,\n} from \"./defineAction.js\";\nimport { importSharedPropertyType } from \"./defineImportSpt.js\";\nimport { defineInterface } from \"./defineInterface.js\";\nimport { defineInterfaceLinkConstraint } from \"./defineInterfaceLinkConstraint.js\";\nimport { defineLink } from \"./defineLink.js\";\nimport { defineObject } from \"./defineObject.js\";\nimport {\n defineOntology,\n dumpOntologyFullMetadata,\n dumpValueTypeWireType,\n} from \"./defineOntology.js\";\nimport { defineSharedPropertyType } from \"./defineSpt.js\";\nimport { defineValueType } from \"./defineValueType.js\";\nimport { importOntologyEntity } from \"./importOntologyEntity.js\";\nimport {\n type InterfaceType,\n OntologyEntityTypeEnum,\n type SharedPropertyType,\n} from \"./types.js\";\n\ndescribe(\"Ontology Defining\", () => {\n beforeEach(async () => {\n await defineOntology(\"com.palantir.\", () => {}, \"/tmp/\");\n });\n\n describe(\"ValueTypes\", () => {\n it(\"Fails to define value type with incorrect semver\", () => {\n expect(() =>\n defineValueType({\n apiName: \"apiName\",\n displayName: \"displayName\",\n type: {\n \"type\": \"boolean\",\n constraints: [{ constraint: { \"allowedValues\": [\"TRUE_VALUE\"] } }],\n },\n version: \"not a version\",\n })\n ).toThrowErrorMatchingInlineSnapshot(\n \"[Error: Invariant failed: Version is not a valid semver]\",\n );\n });\n\n it(\"Tests convertProperty function with valueType constraints for string\", () => {\n const testStringValueType = defineValueType({\n apiName: \"stringWithConstraints\",\n displayName: \"String With Constraints\",\n description: \"A string type with additional constraints\",\n type: {\n \"type\": \"string\",\n constraints: [\n {\n constraint: {\n type: \"length\",\n length: {\n minSize: 5,\n maxSize: 20,\n },\n },\n failureMessage: {\n message: \"String must be between 5 and 20 characters\",\n },\n },\n ],\n },\n version: \"1.0.0\",\n });\n\n const object = defineObject({\n titlePropertyApiName: \"constrainedString\",\n displayName: \"Test Object\",\n pluralDisplayName: \"Test Objects\",\n apiName: \"testObject\",\n primaryKeyPropertyApiName: \"constrainedString\",\n properties: {\n \"constrainedString\": {\n type: \"string\",\n displayName: \"Constrained String\",\n valueType: testStringValueType,\n },\n },\n });\n\n const ontology = dumpOntologyFullMetadata();\n const objectPropertyType =\n ontology.blockData.objectTypes[\"com.palantir.testObject\"]\n .objectType.propertyTypes[\"constrainedString\"];\n\n expect(objectPropertyType.valueType).toEqual({\n apiName: \"stringWithConstraints\",\n version: \"1.0.0\",\n });\n\n expect(objectPropertyType.dataConstraints).toBeDefined();\n expect(objectPropertyType.dataConstraints?.propertyTypeConstraints)\n .toHaveLength(1);\n\n const constraintWrapper = objectPropertyType.dataConstraints\n ?.propertyTypeConstraints[0];\n expect(constraintWrapper?.constraints?.type).toBe(\"string\");\n expect(\n (constraintWrapper?.constraints as {\n type: \"string\";\n string: { length: { minSize: number; maxSize: number } };\n }).string.length.minSize,\n ).toBe(5);\n expect(\n (constraintWrapper?.constraints as {\n type: \"string\";\n string: { length: { minSize: number; maxSize: number } };\n }).string.length.maxSize,\n ).toBe(20);\n expect(constraintWrapper?.failureMessage?.message).toBe(\n \"String must be between 5 and 20 characters\",\n );\n });\n\n it(\"Correctly serializes a value type\", () => {\n defineValueType({\n apiName: \"apiName\",\n displayName: \"displayName\",\n type: {\n \"type\": \"boolean\",\n constraints: [{ constraint: { \"allowedValues\": [\"TRUE_VALUE\"] } }],\n },\n version: \"0.1.0\",\n });\n expect(dumpValueTypeWireType()).toMatchInlineSnapshot(`\n {\n \"valueTypes\": [\n {\n \"metadata\": {\n \"apiName\": \"apiName\",\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"displayName\",\n },\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n \"versions\": [\n {\n \"baseType\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"constraints\": [\n {\n \"constraint\": {\n \"constraint\": {\n \"boolean\": {\n \"allowedValues\": [\n \"TRUE_VALUE\",\n ],\n },\n \"type\": \"boolean\",\n },\n \"failureMessage\": undefined,\n },\n },\n ],\n \"exampleValues\": [],\n \"version\": \"0.1.0\",\n },\n ],\n },\n ],\n }\n `);\n });\n\n // N.B Not sure what this is for but I don't want to break anything so I added the eslint ignore\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n defineOntology(\"com.palantir.\", () => {}, \"/tmp/\");\n });\n\n describe(\"Interfaces\", () => {\n it(\"doesn't let you define the same interface twice\", () => {\n defineInterface({ apiName: \"Foo\" });\n expect(() => {\n defineInterface({ apiName: \"Foo\" });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Interface com.palantir.Foo already exists]`,\n );\n });\n\n it(\"defaults displayName to apiName\", () => {\n const result = defineInterface({ apiName: \"Foo\" });\n expect(result.displayMetadata.displayName).toBe(\"Foo\");\n });\n\n it(\"defaults description to displayName\", () => {\n const result = defineInterface({ apiName: \"Foo\", displayName: \"d\" });\n expect(result.displayMetadata.description).toBe(\"d\");\n });\n\n it(\"defaults description to displayName to apiName\", () => {\n const result = defineInterface({ apiName: \"Foo\" });\n expect(result.displayMetadata.description).toBe(\"Foo\");\n });\n\n describe(\"auto spts\", () => {\n it(\"auto creates spts\", () => {\n defineInterface({\n apiName: \"Foo\",\n properties: {\n foo: \"string\",\n },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.Foo\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.Foo\",\n \"displayMetadata\": {\n \"description\": \"Foo\",\n \"displayName\": \"Foo\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.foo\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.foo\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"does not let you conflict spts\", () => {\n defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.foo\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n\n expect(() => {\n defineInterface({\n apiName: \"Foo\",\n properties: {\n foo: \"string\",\n },\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Shared property type com.palantir.foo already exists]`,\n );\n });\n });\n\n it(\"allows extends interfaces with InterfaceType provided\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n property1: \"string\",\n },\n });\n const childInterface = defineInterface({\n apiName: \"childInterface\",\n properties: {\n property2: \"string\",\n },\n extends: [parentInterface],\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.childInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.childInterface\",\n \"displayMetadata\": {\n \"description\": \"childInterface\",\n \"displayName\": \"childInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [\n \"com.palantir.parentInterface\",\n ],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property2\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"supports optional properties\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n property1: { required: false, propertyDefinition: \"string\" },\n },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": false,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"allows extends interfaces with apiName provided\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n property1: \"string\",\n },\n });\n const childInterface = defineInterface({\n apiName: \"childInterface\",\n properties: {\n property2: \"string\",\n },\n extends: parentInterface,\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.childInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.childInterface\",\n \"displayMetadata\": {\n \"description\": \"childInterface\",\n \"displayName\": \"childInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [\n \"com.palantir.parentInterface\",\n ],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property2\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"supports specifying searchable\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n searchable: false,\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n });\n\n describe(\"ILTs\", () => {\n let a: InterfaceType;\n let b: InterfaceType;\n\n beforeEach(() => {\n a = defineInterface({ apiName: \"A\" });\n b = defineInterface({ apiName: \"B\" });\n });\n\n it(\"single link works\", () => {\n expect(a).not.toBeUndefined();\n defineInterfaceLinkConstraint({\n from: a,\n toOne: b,\n apiName: \"singleLink\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.A\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.A\",\n \"displayMetadata\": {\n \"description\": \"A\",\n \"displayName\": \"A\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [\n {\n \"cardinality\": \"SINGLE\",\n \"linkedEntityTypeId\": {\n \"interfaceType\": \"com.palantir.B\",\n \"type\": \"interfaceType\",\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.singleLink\",\n \"description\": \"singleLink\",\n \"displayName\": \"singleLink\",\n },\n \"required\": true,\n },\n ],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.B\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.B\",\n \"displayMetadata\": {\n \"description\": \"B\",\n \"displayName\": \"B\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"many link works\", () => {\n defineInterfaceLinkConstraint({\n from: a,\n toMany: b,\n apiName: \"manyLink\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.A\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.A\",\n \"displayMetadata\": {\n \"description\": \"A\",\n \"displayName\": \"A\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [\n {\n \"cardinality\": \"MANY\",\n \"linkedEntityTypeId\": {\n \"interfaceType\": \"com.palantir.B\",\n \"type\": \"interfaceType\",\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.manyLink\",\n \"description\": \"manyLink\",\n \"displayName\": \"manyLink\",\n },\n \"required\": true,\n },\n ],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.B\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.B\",\n \"displayMetadata\": {\n \"description\": \"B\",\n \"displayName\": \"B\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n });\n\n describe(\"SPTs\", () => {\n it(\"doesn't let you create the same spt twice\", () => {\n defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n\n expect(() => {\n defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Shared property type com.palantir.foo already exists]`,\n );\n });\n });\n\n it(\"uses a predefined spt\", () => {\n const fooSpt = defineSharedPropertyType({\n apiName: \"fooSpt\",\n type: \"string\",\n });\n\n const FooInterface = defineInterface({\n apiName: \"FooInterface\",\n displayName: \"Foo Interface\",\n properties: {\n fooSpt,\n },\n icon: { color: \"#00000\", locator: \"airplane\" },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.FooInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.FooInterface\",\n \"displayMetadata\": {\n \"description\": \"Foo Interface\",\n \"displayName\": \"Foo Interface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#00000\",\n \"locator\": \"airplane\",\n },\n \"type\": \"blueprint\",\n },\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.fooSpt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.fooSpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"fooSpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.fooSpt\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.fooSpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"fooSpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"properly serializes both types of struct SPTs\", () => {\n const fooSpt = defineSharedPropertyType({\n apiName: \"fooSpt\",\n type: {\n type: \"struct\",\n structDefinition: {\n \"simpleProperty\": \"boolean\",\n \"complexProperty\": {\n fieldType: \"date\",\n displayMetadata: {\n displayName: \"complex property\",\n description: undefined,\n },\n },\n },\n },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.fooSpt\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.fooSpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"fooSpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"typeClasses\": [],\n },\n {\n \"aliases\": [],\n \"apiName\": \"complexProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"complex property\",\n },\n \"fieldType\": {\n \"date\": {},\n \"type\": \"date\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"Custom string fields properly set\", () => {\n const spt = defineSharedPropertyType({\n apiName: \"foo\",\n type: {\n type: \"string\",\n isLongText: true,\n supportsEfficientLeadingWildcard: true,\n supportsExactMatching: false,\n },\n });\n\n defineInterface({\n apiName: \"interface\",\n properties: { foo: spt },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.interface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.interface\",\n \"displayMetadata\": {\n \"description\": \"interface\",\n \"displayName\": \"interface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.foo\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": true,\n \"supportsEfficientLeadingWildcard\": true,\n \"supportsExactMatching\": false,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.foo\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": true,\n \"supportsEfficientLeadingWildcard\": true,\n \"supportsExactMatching\": false,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"defaults interface status to active\", () => {\n const result = defineInterface({ apiName: \"Foo\" });\n expect(result.status).toEqual({ type: \"active\", active: {} });\n });\n\n it(\"sets interface status as experimental from opts\", () => {\n const experimentalStatus = {\n type: \"experimental\",\n experimental: {},\n };\n const result = defineInterface({\n apiName: \"Foo\",\n status: { type: \"experimental\" },\n });\n expect(result.status).toEqual(experimentalStatus);\n });\n\n it(\"sets interface status as deprecated from opts\", () => {\n const deprecatedStatus = {\n type: \"deprecated\",\n deprecated: {\n message: \"foo\",\n deadline: \"foo\",\n },\n };\n const result = defineInterface({\n apiName: \"Foo\",\n status: { type: \"deprecated\", message: \"foo\", deadline: \"foo\" },\n });\n expect(result.status).toEqual(deprecatedStatus);\n });\n\n describe(\"Objects\", () => {\n it(\"Fails if any property reference does not exist\", () => {\n const spt = defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n\n const sample = defineInterface({\n apiName: \"interface\",\n properties: { foo: spt },\n });\n\n expect(() => {\n defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Title property fizz is not defined on object foo]`,\n );\n\n expect(() => {\n defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"bar\": { type: \"string\" } },\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Primary key property fizz does not exist on object foo]`,\n );\n\n expect(() => {\n defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n implementsInterfaces: [{\n implements: sample,\n propertyMapping: [{\n interfaceProperty: \"com.palantir.foo\",\n mapsTo: \"fizz\",\n }],\n }],\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: \\nOntology Definition Error: Object property mapped to interface does not exist. Object Property Mapped: fizz\\n]`,\n );\n\n expect(() => {\n defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n implementsInterfaces: [{\n implements: sample,\n propertyMapping: [{\n interfaceProperty: \"com.palantir.fizz\",\n mapsTo: \"bar\",\n }, {\n interfaceProperty: \"com.palantir.foo\",\n mapsTo: \"bar\",\n }],\n }],\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: \\nOntology Definition Error: Interface property com.palantir.fizz referenced in foo object does not exist\\n]`,\n );\n });\n\n it(\"Objects properly defined\", () => {\n const spt = defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n\n const sample = defineInterface({\n apiName: \"interface\",\n properties: { foo: spt },\n });\n\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"bar\": { type: \"string\", displayName: \"Bar\" },\n \"arrayProp\": {\n type: \"string\",\n array: true,\n displayName: \"Array Property Test\",\n },\n \"geopoint\": {\n type: {\n type: \"struct\",\n structDefinition: { lat: \"double\", lng: \"double\" },\n },\n displayName: \"geopoint\",\n },\n },\n implementsInterfaces: [{\n implements: sample,\n propertyMapping: [{\n interfaceProperty: \"foo\",\n mapsTo: \"bar\",\n }],\n }],\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.interface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.interface\",\n \"displayMetadata\": {\n \"description\": \"interface\",\n \"displayName\": \"interface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.foo\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"arrayProp\": {\n \"column\": \"arrayProp\",\n \"type\": \"column\",\n },\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"geopoint\": {\n \"struct\": {\n \"column\": \"geopoint\",\n \"mapping\": {\n \"lat\": {\n \"apiName\": \"lat\",\n \"mappings\": {},\n },\n \"lng\": {\n \"apiName\": \"lng\",\n \"mappings\": {},\n },\n },\n },\n \"type\": \"struct\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [\n {\n \"interfaceTypeApiName\": \"com.palantir.interface\",\n \"linksV2\": {},\n \"properties\": {\n \"com.palantir.foo\": {\n \"propertyTypeRid\": \"bar\",\n },\n },\n \"propertiesV2\": {},\n },\n ],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"arrayProp\": {\n \"apiName\": \"arrayProp\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Array Property Test\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"array\": {\n \"subtype\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n },\n \"type\": \"array\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"geopoint\": {\n \"apiName\": \"geopoint\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"geopoint\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"lat\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"lat\",\n },\n \"fieldType\": {\n \"double\": {},\n \"type\": \"double\",\n },\n \"typeClasses\": [],\n },\n {\n \"aliases\": [],\n \"apiName\": \"lng\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"lng\",\n },\n \"fieldType\": {\n \"double\": {},\n \"type\": \"double\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {\n \"com.palantir.foo\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n it(\"One To Many Links are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n });\n\n const otherObject = defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizz\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"fizz\": { type: \"string\" }, \"bar\": { type: \"string\" } },\n });\n\n defineLink({\n apiName: \"fizzToFoo\",\n one: {\n object: object,\n metadata: {\n apiName: \"fizzes\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foos\",\n },\n },\n toMany: {\n object: otherObject,\n metadata: {\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizzes\",\n apiName: \"foos\",\n },\n },\n manyForeignKeyProperty: \"bar\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {\n \"fizzToFoo\": {\n \"datasources\": [],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"linkType\": {\n \"definition\": {\n \"oneToMany\": {\n \"cardinalityHint\": \"ONE_TO_MANY\",\n \"manyToOneLinkMetadata\": {\n \"apiName\": \"foos\",\n \"displayMetadata\": {\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Fizzes\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n \"objectTypeRidManySide\": \"com.palantir.fizz\",\n \"objectTypeRidOneSide\": \"com.palantir.foo\",\n \"oneSidePrimaryKeyToManySidePropertyMapping\": [\n {\n \"from\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n \"to\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.fizz\",\n },\n },\n ],\n \"oneToManyLinkMetadata\": {\n \"apiName\": \"fizzes\",\n \"displayMetadata\": {\n \"displayName\": \"Foo\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Foos\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n },\n \"type\": \"oneToMany\",\n },\n \"id\": \"fizz-to-foo\",\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"objectTypes\": {\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.fizz\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"fizz\": {\n \"column\": \"fizz\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"fizz\",\n },\n },\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"Many To Many Links are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n });\n\n const otherObject = defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizz\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"fizz\": { type: \"string\" }, \"bar\": { type: \"string\" } },\n });\n\n defineLink({\n apiName: \"fizzToFoo\",\n many: {\n object: object,\n metadata: {\n displayName: \"Foo\",\n pluralDisplayName: \"Foos\",\n apiName: \"fizzes\",\n },\n },\n toMany: {\n object: otherObject,\n metadata: {\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizzes\",\n apiName: \"foos\",\n },\n },\n });\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {\n \"fizzToFoo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"dataset\": {\n \"datasetRid\": \"link-fizzToFoo\",\n \"objectTypeAPrimaryKeyMapping\": [\n {\n \"column\": \"bar\",\n \"property\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n },\n ],\n \"objectTypeBPrimaryKeyMapping\": [\n {\n \"column\": \"bar\",\n \"property\": {\n \"apiName\": \"fizz\",\n \"object\": \"com.palantir.fizz\",\n },\n },\n ],\n \"writebackDatasetRid\": undefined,\n },\n \"type\": \"dataset\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": undefined,\n \"rid\": \"ri.ontology.main.datasource.link-fizzToFoo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"linkType\": {\n \"definition\": {\n \"manyToMany\": {\n \"objectTypeAPrimaryKeyPropertyMapping\": [\n {\n \"from\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n \"to\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n },\n ],\n \"objectTypeAToBLinkMetadata\": {\n \"apiName\": \"fizzes\",\n \"displayMetadata\": {\n \"displayName\": \"Foo\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Foos\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n \"objectTypeBPrimaryKeyPropertyMapping\": [\n {\n \"from\": {\n \"apiName\": \"fizz\",\n \"object\": \"com.palantir.fizz\",\n },\n \"to\": {\n \"apiName\": \"fizz\",\n \"object\": \"com.palantir.fizz\",\n },\n },\n ],\n \"objectTypeBToALinkMetadata\": {\n \"apiName\": \"foos\",\n \"displayMetadata\": {\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Fizzes\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n \"objectTypeRidA\": \"com.palantir.foo\",\n \"objectTypeRidB\": \"com.palantir.fizz\",\n \"peeringMetadata\": undefined,\n },\n \"type\": \"manyToMany\",\n },\n \"id\": \"fizz-to-foo\",\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"objectTypes\": {\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.fizz\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"fizz\": {\n \"column\": \"fizz\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"fizz\",\n },\n },\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"Minimal link definitions are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n });\n\n const otherObject = defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizz\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"fizz\": { type: \"string\" }, \"bar\": { type: \"string\" } },\n });\n\n defineLink({\n apiName: \"fizzToFoo\",\n one: {\n object: object,\n metadata: {\n apiName: \"fizzes\",\n },\n },\n toMany: {\n object: otherObject,\n metadata: {\n apiName: \"foos\",\n },\n },\n manyForeignKeyProperty: \"bar\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {\n \"fizzToFoo\": {\n \"datasources\": [],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"linkType\": {\n \"definition\": {\n \"oneToMany\": {\n \"cardinalityHint\": \"ONE_TO_MANY\",\n \"manyToOneLinkMetadata\": {\n \"apiName\": \"foos\",\n \"displayMetadata\": {\n \"displayName\": \"Foos\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Foos\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n \"objectTypeRidManySide\": \"com.palantir.fizz\",\n \"objectTypeRidOneSide\": \"com.palantir.foo\",\n \"oneSidePrimaryKeyToManySidePropertyMapping\": [\n {\n \"from\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n \"to\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.fizz\",\n },\n },\n ],\n \"oneToManyLinkMetadata\": {\n \"apiName\": \"fizzes\",\n \"displayMetadata\": {\n \"displayName\": \"Fizzes\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Fizzes\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n },\n \"type\": \"oneToMany\",\n },\n \"id\": \"fizz-to-foo\",\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"objectTypes\": {\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.fizz\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"fizz\": {\n \"column\": \"fizz\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"fizz\",\n },\n },\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"Explicit datasource definitions are properly defined\", () => {\n const datasetBackedObject = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"datasetBackedObject\",\n pluralDisplayName: \"datasetBackedObject\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n datasource: { type: \"dataset\" },\n });\n\n const streamBackedObjectNoRetention = defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"streamBackedObjectNoRetention\",\n pluralDisplayName: \"streamBackedObjectNoRetention\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"fizz\": { type: \"string\" }, \"bar\": { type: \"string\" } },\n datasource: { type: \"stream\" },\n });\n\n const streamBackedObjectWithRetention = defineObject({\n titlePropertyApiName: \"buzz\",\n displayName: \"streamBackedObjectWithRetention\",\n pluralDisplayName: \"streamBackedObjectWithRetention\",\n apiName: \"buzz\",\n primaryKeyPropertyApiName: \"buzz\",\n properties: { \"buzz\": { type: \"string\" } },\n datasource: { type: \"stream\", retentionPeriod: \"PT1H\" },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.buzz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"streamV2\": {\n \"propertyMapping\": {\n \"buzz\": \"buzz\",\n },\n \"propertySecurityGroups\": undefined,\n \"retentionPolicy\": {\n \"time\": {\n \"window\": \"PT1H\",\n },\n \"type\": \"time\",\n },\n \"streamLocator\": \"com.palantir.buzz\",\n },\n \"type\": \"streamV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.buzz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.buzz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"streamBackedObjectWithRetention\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"streamBackedObjectWithRetention\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"buzz\",\n ],\n \"propertyTypes\": {\n \"buzz\": {\n \"apiName\": \"buzz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Buzz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"buzz\",\n },\n },\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"streamV2\": {\n \"propertyMapping\": {\n \"bar\": \"bar\",\n \"fizz\": \"fizz\",\n },\n \"propertySecurityGroups\": undefined,\n \"retentionPolicy\": {\n \"none\": {},\n \"type\": \"none\",\n },\n \"streamLocator\": \"com.palantir.fizz\",\n },\n \"type\": \"streamV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"streamBackedObjectNoRetention\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"streamBackedObjectNoRetention\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"fizz\",\n },\n },\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"datasetBackedObject\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"datasetBackedObject\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"Restricted view datasources are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"bar\": { type: \"string\" },\n },\n datasource: { type: \"restrictedView\" },\n });\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"restrictedViewV2\": {\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n \"restrictedViewRid\": \"com.palantir.foo\",\n },\n \"type\": \"restrictedViewV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Edit only properties are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: {\n \"bar\": {\n type: \"string\",\n editOnly: true,\n },\n \"fizz\": {\n type: \"string\",\n },\n },\n });\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"editOnly\": {},\n \"type\": \"editOnly\",\n },\n \"fizz\": {\n \"column\": \"fizz\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Fails if edit only property is primary key\", () => {\n expect(() => {\n defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\", editOnly: true } },\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Primary key property bar on object foo cannot be edit-only]`,\n );\n });\n\n it(\"Fail if stream retention period is not ISO 8601 compliant\", () => {\n expect(() =>\n defineObject({\n titlePropertyApiName: \"buzz\",\n displayName: \"streamBackedObjectWithRetention\",\n pluralDisplayName: \"streamBackedObjectWithRetention\",\n apiName: \"buzz\",\n primaryKeyPropertyApiName: \"buzz\",\n properties: { \"buzz\": { type: \"string\" } },\n datasource: {\n type: \"stream\",\n retentionPeriod: \"bad retention period string\",\n },\n })\n ).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Retention period \"bad retention period string\" on object \"buzz\" is not a valid ISO 8601 duration string]`,\n );\n });\n\n it(\"Property-level datasources are properly defined\", () => {\n const exampleObject = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"exampleObject\",\n pluralDisplayName: \"exampleObject\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"fizz\": { type: \"mediaReference\" },\n \"bar\": { type: \"string\" },\n },\n datasource: { type: \"stream\" },\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"mediaSetView\": {\n \"assumedMarkings\": [],\n \"mediaSetViewLocator\": \"com.palantir.fizz.fizz\",\n \"properties\": [\n \"fizz\",\n ],\n },\n \"type\": \"mediaSetView\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.fizz\",\n },\n {\n \"datasource\": {\n \"streamV2\": {\n \"propertyMapping\": {\n \"bar\": \"bar\",\n \"fizz\": \"fizz\",\n },\n \"propertySecurityGroups\": undefined,\n \"retentionPolicy\": {\n \"none\": {},\n \"type\": \"none\",\n },\n \"streamLocator\": \"com.palantir.fizz\",\n },\n \"type\": \"streamV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"exampleObject\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"exampleObject\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"mediaReference\": {},\n \"type\": \"mediaReference\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n });\n\n describe(\"Marking Constraints\", () => {\n it(\"supports marking constraints with CBAC type and markingInputGroupName\", () => {\n const obj = defineObject({\n titlePropertyApiName: \"title\",\n displayName: \"Document\",\n pluralDisplayName: \"Documents\",\n apiName: \"document\",\n primaryKeyPropertyApiName: \"title\",\n properties: {\n \"title\": {\n type: \"string\",\n displayName: \"Title\",\n },\n \"classification\": {\n type: {\n type: \"marking\",\n markingType: \"CBAC\",\n markingInputGroupName: \"classificationGroup\",\n },\n displayName: \"Classification\",\n },\n },\n });\n\n const ontology = dumpOntologyFullMetadata();\n const classificationConstraint = ontology.blockData\n .objectTypes[\"com.palantir.document\"].datasources[0].dataSecurity\n ?.classificationConstraint!;\n expect(classificationConstraint.markingGroupName).toEqual(\n \"classificationGroup\",\n );\n });\n });\n\n describe(\"Actions\", () => {\n it(\"Interface actions are properly defined\", () => {\n const exampleAction = defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"addInterfaceRule\",\n addInterfaceRule: {\n interfaceApiName: \"foo\",\n objectTypeParameter: \"param1\",\n sharedPropertyValues: {},\n },\n }],\n parameters: [{\n id: \"param1\",\n displayName: \"param1\",\n type: \"boolean\",\n validation: { required: true, allowedValues: { type: \"boolean\" } },\n }],\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addInterfaceRule\": {\n \"interfaceApiName\": \"com.palantir.foo\",\n \"objectTypeParameter\": \"param1\",\n \"sharedPropertyValues\": {},\n },\n \"type\": \"addInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"param1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"checkbox\": {},\n \"type\": \"checkbox\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"boolean\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"type\": \"boolean\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"exampleAction\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"param1\",\n ],\n \"parameters\": {\n \"param1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"param1\",\n \"typeClasses\": [],\n },\n \"id\": \"param1\",\n \"type\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n it(\"Simple interface actions (with object types) are properly defined\", () => {\n const exampleStructPropertyType = defineSharedPropertyType({\n apiName: \"property2\",\n type: {\n type: \"struct\",\n structDefinition: {\n simpleProperty: \"string\",\n },\n },\n });\n const mySpt = defineSharedPropertyType({\n apiName: \"mySpt\",\n type: \"string\",\n });\n const exampleInterface = defineInterface({\n apiName: \"exampleInterface\",\n properties: {\n mySpt,\n property1: \"string\",\n property2: exampleStructPropertyType,\n },\n });\n\n const exampleObjectType = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"exampleObjectType\",\n pluralDisplayName: \"exampleObjectTypes\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"bar\": { type: \"string\" },\n \"property1\": { type: \"string\" },\n \"property2\": {\n type: {\n type: \"struct\",\n structDefinition: { simpleProperty: \"string\" },\n },\n },\n },\n implementsInterfaces: [{\n implements: exampleInterface,\n propertyMapping: [\n {\n interfaceProperty: \"com.palantir.mySpt\",\n mapsTo: \"bar\",\n },\n {\n interfaceProperty: \"com.palantir.property1\",\n mapsTo: \"property1\",\n },\n {\n interfaceProperty: \"com.palantir.property2\",\n mapsTo: \"property2\",\n },\n ],\n }],\n });\n\n const createActionWithObjectType = defineCreateInterfaceObjectAction(\n exampleInterface,\n exampleObjectType,\n );\n\n const modifyAction = defineModifyInterfaceObjectAction(\n exampleInterface,\n exampleObjectType,\n );\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-example-interface-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addInterfaceRule\": {\n \"interfaceApiName\": \"com.palantir.exampleInterface\",\n \"objectTypeParameter\": \"objectTypeParameter\",\n \"sharedPropertyValues\": {\n \"com.palantir.mySpt\": {\n \"parameterId\": \"com.palantir.mySpt\",\n \"type\": \"parameterId\",\n },\n \"com.palantir.property1\": {\n \"parameterId\": \"com.palantir.property1\",\n \"type\": \"parameterId\",\n },\n },\n },\n \"type\": \"addInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"com.palantir.mySpt\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"com.palantir.property1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"objectTypeParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"oneOf\": {\n \"oneOf\": {\n \"labelledValues\": [\n {\n \"label\": \"exampleObjectType\",\n \"value\": {\n \"objectType\": {\n \"objectTypeId\": \"com.palantir.foo\",\n },\n \"type\": \"objectType\",\n },\n },\n ],\n \"otherValueAllowed\": {\n \"allowed\": false,\n },\n },\n \"type\": \"oneOf\",\n },\n \"type\": \"oneOf\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-example-interface-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create exampleInterface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [\n \"com.palantir.exampleInterface\",\n ],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectTypeParameter\",\n \"com.palantir.mySpt\",\n \"com.palantir.property1\",\n ],\n \"parameters\": {\n \"com.palantir.mySpt\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.mySpt\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"com.palantir.property1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"property1\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.property1\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"objectTypeParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Object type to create\",\n \"typeClasses\": [],\n },\n \"id\": \"objectTypeParameter\",\n \"type\": {\n \"objectTypeReference\": {\n \"interfaceTypeRids\": [\n \"com.palantir.exampleInterface\",\n ],\n },\n \"type\": \"objectTypeReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.modify-example-interface-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyInterfaceRule\": {\n \"interfaceObjectToModifyParameter\": \"interfaceObjectToModifyParameter\",\n \"sharedPropertyValues\": {\n \"com.palantir.mySpt\": {\n \"parameterId\": \"com.palantir.mySpt\",\n \"type\": \"parameterId\",\n },\n \"com.palantir.property1\": {\n \"parameterId\": \"com.palantir.property1\",\n \"type\": \"parameterId\",\n },\n },\n },\n \"type\": \"modifyInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"com.palantir.mySpt\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"com.palantir.property1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"interfaceObjectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"oneOf\": {\n \"oneOf\": {\n \"labelledValues\": [\n {\n \"label\": \"exampleObjectType\",\n \"value\": {\n \"objectType\": {\n \"objectTypeId\": \"com.palantir.foo\",\n },\n \"type\": \"objectType\",\n },\n },\n ],\n \"otherValueAllowed\": {\n \"allowed\": false,\n },\n },\n \"type\": \"oneOf\",\n },\n \"type\": \"oneOf\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.modify-example-interface-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Modify exampleInterface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [\n \"com.palantir.exampleInterface\",\n ],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"interfaceObjectToModifyParameter\",\n \"com.palantir.mySpt\",\n \"com.palantir.property1\",\n ],\n \"parameters\": {\n \"com.palantir.mySpt\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.mySpt\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"com.palantir.property1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"property1\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.property1\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"interfaceObjectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Object type to modify\",\n \"typeClasses\": [],\n },\n \"id\": \"interfaceObjectToModifyParameter\",\n \"type\": {\n \"interfaceReference\": {\n \"interfaceTypeRid\": \"com.palantir.exampleInterface\",\n },\n \"type\": \"interfaceReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.exampleInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.exampleInterface\",\n \"displayMetadata\": {\n \"description\": \"exampleInterface\",\n \"displayName\": \"exampleInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.mySpt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.mySpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"mySpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"property1\": {\n \"column\": \"property1\",\n \"type\": \"column\",\n },\n \"property2\": {\n \"struct\": {\n \"column\": \"property2\",\n \"mapping\": {\n \"simpleProperty\": {\n \"apiName\": \"simpleProperty\",\n \"mappings\": {},\n },\n },\n },\n \"type\": \"struct\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"exampleObjectType\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"exampleObjectTypes\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [\n {\n \"interfaceTypeApiName\": \"com.palantir.exampleInterface\",\n \"linksV2\": {},\n \"properties\": {\n \"com.palantir.mySpt\": {\n \"propertyTypeRid\": \"bar\",\n },\n \"com.palantir.property1\": {\n \"propertyTypeRid\": \"property1\",\n },\n \"com.palantir.property2\": {\n \"propertyTypeRid\": \"property2\",\n },\n },\n \"propertiesV2\": {},\n },\n ],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"property1\": {\n \"apiName\": \"property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Property1\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"property2\": {\n \"apiName\": \"property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Property2\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {\n \"com.palantir.mySpt\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.mySpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"mySpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property2\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Concrete actions are properly defined\", () => {\n const exampleAction = defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"addOrModifyObjectRuleV2\",\n addOrModifyObjectRuleV2: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: {\n \"bar\": {\n type: \"parameterId\",\n parameterId: \"param1\",\n },\n },\n structFieldValues: {},\n },\n }],\n parameters: [{\n id: \"param1\",\n displayName: \"param1\",\n type: \"boolean\",\n validation: { required: true, allowedValues: { type: \"boolean\" } },\n }],\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addOrModifyObjectRuleV2\": {\n \"objectToModify\": \"objectToModifyParameter\",\n \"propertyValues\": {\n \"bar\": {\n \"parameterId\": \"param1\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addOrModifyObjectRuleV2\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"param1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"checkbox\": {},\n \"type\": \"checkbox\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"boolean\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"type\": \"boolean\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"exampleAction\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"param1\",\n ],\n \"parameters\": {\n \"param1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"param1\",\n \"typeClasses\": [],\n },\n \"id\": \"param1\",\n \"type\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Conditional overrides on actions are properly defined\", () => {\n const exampleAction = defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: {\n \"bar\": {\n type: \"parameterId\",\n parameterId: \"param1\",\n },\n \"foo\": {\n type: \"parameterId\",\n parameterId: \"param2\",\n },\n },\n structFieldValues: {},\n },\n }],\n parameters: [{\n id: \"param2\",\n displayName: \"param2\",\n type: \"string\",\n validation: {\n required: true,\n allowedValues: { type: \"text\" },\n defaultVisibility: \"editable\",\n },\n }, {\n id: \"param1\",\n displayName: \"param1\",\n type: \"boolean\",\n validation: {\n required: true,\n allowedValues: { type: \"boolean\" },\n defaultVisibility: \"editable\",\n conditionalOverrides: [\n {\n type: \"visibility\",\n condition: {\n type: \"and\",\n conditions: [\n {\n type: \"group\",\n name: \"myGroup\",\n },\n {\n type: \"parameter\",\n parameterId: \"param2\",\n matches: {\n type: \"staticValue\",\n staticValue: {\n type: \"string\",\n string: \"foobar\",\n },\n },\n },\n ],\n },\n },\n ],\n },\n }, {\n id: \"objectToModifyParameter\",\n displayName: \"objectToModifyParameter\",\n type: \"objectTypeReference\",\n validation: {\n required: true,\n allowedValues: { type: \"objectTypeReference\", interfaceTypes: [] },\n defaultVisibility: \"editable\",\n },\n }],\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyObjectRule\": {\n \"objectToModify\": \"objectToModifyParameter\",\n \"propertyValues\": {\n \"bar\": {\n \"parameterId\": \"param1\",\n \"type\": \"parameterId\",\n },\n \"foo\": {\n \"parameterId\": \"param2\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"modifyObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"objectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectTypeReference\": {\n \"objectTypeReference\": {\n \"interfaceTypeRids\": [],\n },\n \"type\": \"objectTypeReference\",\n },\n \"type\": \"objectTypeReference\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"param1\": {\n \"conditionalOverrides\": [\n {\n \"condition\": {\n \"and\": {\n \"conditions\": [\n {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"groupIds\": {},\n \"type\": \"groupIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"myGroup\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n {\n \"comparison\": {\n \"left\": {\n \"parameterId\": \"param2\",\n \"type\": \"parameterId\",\n },\n \"operator\": \"EQUALS\",\n \"right\": {\n \"staticValue\": {\n \"string\": \"foobar\",\n \"type\": \"string\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n ],\n },\n \"type\": \"and\",\n },\n \"parameterBlockOverrides\": [\n {\n \"type\": \"visibility\",\n \"visibility\": {\n \"visibility\": {\n \"hidden\": {},\n \"type\": \"hidden\",\n },\n },\n },\n ],\n },\n ],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"checkbox\": {},\n \"type\": \"checkbox\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"boolean\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"type\": \"boolean\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"param2\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"exampleAction\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"param2\",\n \"param1\",\n \"objectToModifyParameter\",\n ],\n \"parameters\": {\n \"objectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"objectToModifyParameter\",\n \"typeClasses\": [],\n },\n \"id\": \"objectToModifyParameter\",\n \"type\": {\n \"objectTypeReference\": {},\n \"type\": \"objectTypeReference\",\n },\n },\n \"param1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"param1\",\n \"typeClasses\": [],\n },\n \"id\": \"param1\",\n \"type\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n },\n \"param2\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"param2\",\n \"typeClasses\": [],\n },\n \"id\": \"param2\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Parameter conditions are correctly validated on actions\", () => {\n expect(() =>\n defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: {\n \"bar\": {\n type: \"parameterId\",\n parameterId: \"param1\",\n },\n \"foo\": {\n type: \"parameterId\",\n parameterId: \"param2\",\n },\n },\n structFieldValues: {},\n },\n }],\n parameters: [{\n id: \"param1\",\n displayName: \"param1\",\n type: \"boolean\",\n validation: {\n required: true,\n allowedValues: { type: \"boolean\" },\n defaultVisibility: \"editable\",\n conditionalOverrides: [\n {\n type: \"visibility\",\n condition: {\n type: \"and\",\n conditions: [\n {\n type: \"group\",\n name: \"myGroup\",\n },\n {\n type: \"parameter\",\n parameterId: \"param2\",\n matches: {\n type: \"staticValue\",\n staticValue: {\n type: \"string\",\n string: \"foobar\",\n },\n },\n },\n ],\n },\n },\n ],\n },\n }, {\n id: \"param2\",\n displayName: \"param2\",\n type: \"string\",\n validation: {\n required: true,\n allowedValues: { type: \"text\" },\n defaultVisibility: \"editable\",\n },\n }, {\n id: \"objectToModifyParameter\",\n displayName: \"objectToModifyParameter\",\n type: \"objectTypeReference\",\n validation: {\n required: true,\n allowedValues: {\n type: \"objectTypeReference\",\n interfaceTypes: [],\n },\n defaultVisibility: \"editable\",\n },\n }],\n })\n ).toThrowError(\n `Invariant failed: Parameter condition on param1 is referencing later parameter param2`,\n );\n\n expect(() =>\n defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: {\n \"bar\": {\n type: \"parameterId\",\n parameterId: \"param1\",\n },\n \"foo\": {\n type: \"parameterId\",\n parameterId: \"param2\",\n },\n },\n structFieldValues: {},\n },\n }],\n parameters: [{\n id: \"param1\",\n displayName: \"param1\",\n type: \"boolean\",\n validation: {\n required: true,\n allowedValues: { type: \"boolean\" },\n defaultVisibility: \"editable\",\n conditionalOverrides: [\n {\n type: \"visibility\",\n condition: {\n type: \"and\",\n conditions: [\n {\n type: \"group\",\n name: \"myGroup\",\n },\n {\n type: \"parameter\",\n parameterId: \"param1\",\n matches: {\n type: \"staticValue\",\n staticValue: {\n type: \"string\",\n string: \"foobar\",\n },\n },\n },\n ],\n },\n },\n ],\n },\n }, {\n id: \"param2\",\n displayName: \"param2\",\n type: \"string\",\n validation: {\n required: true,\n allowedValues: { type: \"text\" },\n defaultVisibility: \"editable\",\n },\n }, {\n id: \"objectToModifyParameter\",\n displayName: \"objectToModifyParameter\",\n type: \"objectTypeReference\",\n validation: {\n required: true,\n allowedValues: {\n type: \"objectTypeReference\",\n interfaceTypes: [],\n },\n defaultVisibility: \"editable\",\n },\n }],\n })\n ).toThrowError(\n `Invariant failed: Parameter condition on param1 is referencing itself`,\n );\n\n expect(() =>\n defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: {\n \"bar\": {\n type: \"parameterId\",\n parameterId: \"param1\",\n },\n \"foo\": {\n type: \"parameterId\",\n parameterId: \"param2\",\n },\n },\n structFieldValues: {},\n },\n }],\n parameters: [{\n id: \"param1\",\n displayName: \"param1\",\n type: \"boolean\",\n validation: {\n required: true,\n allowedValues: { type: \"boolean\" },\n defaultVisibility: \"editable\",\n conditionalOverrides: [\n {\n type: \"visibility\",\n condition: {\n type: \"and\",\n conditions: [\n {\n type: \"group\",\n name: \"myGroup\",\n },\n {\n type: \"parameter\",\n parameterId: \"unknownParam\",\n matches: {\n type: \"staticValue\",\n staticValue: {\n type: \"string\",\n string: \"foobar\",\n },\n },\n },\n ],\n },\n },\n ],\n },\n }, {\n id: \"param2\",\n displayName: \"param2\",\n type: \"string\",\n validation: {\n required: true,\n allowedValues: { type: \"text\" },\n defaultVisibility: \"editable\",\n },\n }, {\n id: \"objectToModifyParameter\",\n displayName: \"objectToModifyParameter\",\n type: \"objectTypeReference\",\n validation: {\n required: true,\n allowedValues: {\n type: \"objectTypeReference\",\n interfaceTypes: [],\n },\n defaultVisibility: \"editable\",\n },\n }],\n })\n ).toThrowError(\n `Invariant failed: Parameter condition on param1 is referencing unknown parameter unknownParam`,\n );\n });\n\n it(\"Simple concrete actions are properly defined\", () => {\n const exampleObjectType = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"exampleObjectType\",\n pluralDisplayName: \"exampleObjectTypes\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"bar\": { type: \"string\" },\n \"structProp\": {\n type: {\n type: \"struct\",\n structDefinition: { simpleProperty: \"string\" },\n },\n },\n },\n });\n\n const createObjectActionType = defineCreateObjectAction(\n exampleObjectType,\n );\n const modifyObjectActionType = defineModifyObjectAction(\n exampleObjectType,\n );\n const deleteObjectActionType = defineDeleteObjectAction(\n exampleObjectType,\n );\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-object-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addObjectRule\": {\n \"objectTypeId\": \"com.palantir.foo\",\n \"propertyValues\": {\n \"bar\": {\n \"parameterId\": \"bar\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"bar\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-object-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create exampleObjectType\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.foo\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"bar\",\n ],\n \"parameters\": {\n \"bar\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Bar\",\n \"typeClasses\": [],\n },\n \"id\": \"bar\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.delete-object-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"deleteObjectRule\": {\n \"objectToDelete\": \"objectToDeleteParameter\",\n },\n \"type\": \"deleteObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"objectToDeleteParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectQuery\": {\n \"objectQuery\": {},\n \"type\": \"objectQuery\",\n },\n \"type\": \"objectQuery\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.delete-object-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Delete exampleObjectType\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.foo\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectToDeleteParameter\",\n ],\n \"parameters\": {\n \"objectToDeleteParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Delete object\",\n \"typeClasses\": [],\n },\n \"id\": \"objectToDeleteParameter\",\n \"type\": {\n \"objectReference\": {\n \"objectTypeId\": \"com.palantir.foo\",\n },\n \"type\": \"objectReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.modify-object-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyObjectRule\": {\n \"objectToModify\": \"objectToModifyParameter\",\n \"propertyValues\": {},\n \"structFieldValues\": {},\n },\n \"type\": \"modifyObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"objectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectQuery\": {\n \"objectQuery\": {},\n \"type\": \"objectQuery\",\n },\n \"type\": \"objectQuery\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.modify-object-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Modify exampleObjectType\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.foo\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectToModifyParameter\",\n ],\n \"parameters\": {\n \"objectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Modify object\",\n \"typeClasses\": [],\n },\n \"id\": \"objectToModifyParameter\",\n \"type\": {\n \"objectReference\": {\n \"objectTypeId\": \"com.palantir.foo\",\n },\n \"type\": \"objectReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"structProp\": {\n \"struct\": {\n \"column\": \"structProp\",\n \"mapping\": {\n \"simpleProperty\": {\n \"apiName\": \"simpleProperty\",\n \"mappings\": {},\n },\n },\n },\n \"type\": \"struct\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"exampleObjectType\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"exampleObjectTypes\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"structProp\": {\n \"apiName\": \"structProp\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"StructProp\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"ModifyObjectRule requires objectToModify parameter\", () => {\n const sampleObject = defineObject({\n apiName: \"sampleObject\",\n displayName: \"Test Object\",\n description: \"Sample object description\",\n primaryKeyPropertyApiName: \"id\",\n pluralDisplayName: \"tests\",\n titlePropertyApiName: \"name\",\n properties: {\n \"name\": {\n type: \"string\",\n description: \"The name of the test object\",\n },\n \"id\": { type: \"string\", description: \"The ID of the test object\" },\n },\n });\n expect(() =>\n defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"sampleObject\",\n propertyValues: {\n \"name\": {\n type: \"parameterId\",\n parameterId: \"name\",\n },\n },\n structFieldValues: {},\n },\n }],\n parameters: [{\n id: \"name\",\n displayName: \"Name\",\n type: \"string\",\n validation: { required: true, allowedValues: { type: \"text\" } },\n }],\n })\n ).toThrowError(\n \"Invariant failed: Object to modify parameter must be defined in parameters\",\n );\n });\n\n it(\"Simple interface actions (without object types) are properly defined\", () => {\n const exampleInterface = defineInterface({\n apiName: \"exampleInterface\",\n properties: {\n property1: \"string\",\n },\n });\n const createAction = defineCreateInterfaceObjectAction(exampleInterface);\n const modifyAction = defineModifyInterfaceObjectAction(exampleInterface);\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-example-interface\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addInterfaceRule\": {\n \"interfaceApiName\": \"com.palantir.exampleInterface\",\n \"objectTypeParameter\": \"objectTypeParameter\",\n \"sharedPropertyValues\": {\n \"com.palantir.property1\": {\n \"parameterId\": \"com.palantir.property1\",\n \"type\": \"parameterId\",\n },\n },\n },\n \"type\": \"addInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"com.palantir.property1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"objectTypeParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectTypeReference\": {\n \"objectTypeReference\": {\n \"interfaceTypeRids\": [\n \"com.palantir.exampleInterface\",\n ],\n },\n \"type\": \"objectTypeReference\",\n },\n \"type\": \"objectTypeReference\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-example-interface\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create exampleInterface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [\n \"com.palantir.exampleInterface\",\n ],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectTypeParameter\",\n \"com.palantir.property1\",\n ],\n \"parameters\": {\n \"com.palantir.property1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"property1\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.property1\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"objectTypeParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Object type to create\",\n \"typeClasses\": [],\n },\n \"id\": \"objectTypeParameter\",\n \"type\": {\n \"objectTypeReference\": {\n \"interfaceTypeRids\": [\n \"com.palantir.exampleInterface\",\n ],\n },\n \"type\": \"objectTypeReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.modify-example-interface\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyInterfaceRule\": {\n \"interfaceObjectToModifyParameter\": \"interfaceObjectToModifyParameter\",\n \"sharedPropertyValues\": {\n \"com.palantir.property1\": {\n \"parameterId\": \"com.palantir.property1\",\n \"type\": \"parameterId\",\n },\n },\n },\n \"type\": \"modifyInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"com.palantir.property1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"interfaceObjectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"interfaceObjectQuery\": {\n \"interfaceObjectQuery\": {},\n \"type\": \"interfaceObjectQuery\",\n },\n \"type\": \"interfaceObjectQuery\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.modify-example-interface\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Modify exampleInterface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [\n \"com.palantir.exampleInterface\",\n ],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"interfaceObjectToModifyParameter\",\n \"com.palantir.property1\",\n ],\n \"parameters\": {\n \"com.palantir.property1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"property1\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.property1\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"interfaceObjectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Object type to modify\",\n \"typeClasses\": [],\n },\n \"id\": \"interfaceObjectToModifyParameter\",\n \"type\": {\n \"interfaceReference\": {\n \"interfaceTypeRid\": \"com.palantir.exampleInterface\",\n },\n \"type\": \"interfaceReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.exampleInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.exampleInterface\",\n \"displayMetadata\": {\n \"description\": \"exampleInterface\",\n \"displayName\": \"exampleInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Actions with group permissions are properly defined\", () => {\n const sampleObject = defineObject({\n apiName: \"sampleObject\",\n displayName: \"Test Object\",\n description: \"Sample object description\",\n primaryKeyPropertyApiName: \"id\",\n pluralDisplayName: \"tests\",\n titlePropertyApiName: \"name\",\n properties: {\n \"name\": {\n type: \"string\",\n description: \"The name of the test object\",\n },\n \"id\": {\n type: \"string\",\n displayName: \"ID\",\n description: \"The ID of the test object\",\n },\n },\n });\n const createAction = defineCreateObjectAction(sampleObject, {\n condition: {\n type: \"group\",\n name: \"testGroup\",\n },\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-object-sample-object\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addObjectRule\": {\n \"objectTypeId\": \"com.palantir.sampleObject\",\n \"propertyValues\": {\n \"id\": {\n \"parameterId\": \"id\",\n \"type\": \"parameterId\",\n },\n \"name\": {\n \"parameterId\": \"name\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"groupIds\": {},\n \"type\": \"groupIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"testGroup\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"Did not satisfy validation\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"id\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"name\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-object-sample-object\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create Test Object\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.sampleObject\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"name\",\n \"id\",\n ],\n \"parameters\": {\n \"id\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"ID\",\n \"typeClasses\": [],\n },\n \"id\": \"id\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"name\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Name\",\n \"typeClasses\": [],\n },\n \"id\": \"name\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {\n \"com.palantir.create-object-sample-object\": {\n \"restrictionStatus\": {\n \"hasRolesApplied\": true,\n \"ontologyPackageRid\": null,\n \"publicProject\": false,\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.sampleObject\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.sampleObject\",\n \"propertyMapping\": {\n \"id\": {\n \"column\": \"id\",\n \"type\": \"column\",\n },\n \"name\": {\n \"column\": \"name\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.sampleObject\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.sampleObject\",\n \"displayMetadata\": {\n \"description\": \"Sample object description\",\n \"displayName\": \"Test Object\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"tests\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"id\",\n ],\n \"propertyTypes\": {\n \"id\": {\n \"apiName\": \"id\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": \"The ID of the test object\",\n \"displayName\": \"ID\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"name\": {\n \"apiName\": \"name\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": \"The name of the test object\",\n \"displayName\": \"Name\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"name\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Actions with custom permissions are properly defined\", () => {\n const sampleObject = defineObject({\n apiName: \"sampleObject\",\n displayName: \"Test Object\",\n description: \"Sample object description\",\n primaryKeyPropertyApiName: \"id\",\n pluralDisplayName: \"tests\",\n titlePropertyApiName: \"name\",\n properties: {\n \"name\": {\n type: \"string\",\n description: \"The name of the test object\",\n },\n \"id\": {\n type: \"string\",\n displayName: \"ID\",\n description: \"The ID of the test object\",\n },\n },\n });\n const createAction = defineCreateObjectAction(sampleObject, {\n displayMetadata: {\n failureMessage:\n \"Insufficient permissions. Missing organization membership required to submit action\",\n typeClasses: [],\n },\n condition: {\n type: \"comparison\",\n comparison: {\n operator: \"INTERSECTS\",\n left: {\n type: \"userProperty\",\n userProperty: {\n userId: {\n type: \"currentUser\",\n currentUser: {},\n },\n propertyValue: {\n type: \"organizationMarkingIds\",\n organizationMarkingIds: {},\n },\n },\n },\n right: {\n type: \"staticValue\",\n staticValue: {\n type: \"stringList\",\n stringList: {\n strings: [\n \"87ef507e-f954-457e-ad68-e0df71ef7567\",\n ],\n },\n },\n },\n },\n },\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-object-sample-object\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addObjectRule\": {\n \"objectTypeId\": \"com.palantir.sampleObject\",\n \"propertyValues\": {\n \"id\": {\n \"parameterId\": \"id\",\n \"type\": \"parameterId\",\n },\n \"name\": {\n \"parameterId\": \"name\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"organizationMarkingIds\": {},\n \"type\": \"organizationMarkingIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"87ef507e-f954-457e-ad68-e0df71ef7567\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"Insufficient permissions. Missing organization membership required to submit action\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"id\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"name\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-object-sample-object\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create Test Object\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.sampleObject\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"name\",\n \"id\",\n ],\n \"parameters\": {\n \"id\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"ID\",\n \"typeClasses\": [],\n },\n \"id\": \"id\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"name\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Name\",\n \"typeClasses\": [],\n },\n \"id\": \"name\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {\n \"com.palantir.create-object-sample-object\": {\n \"restrictionStatus\": {\n \"hasRolesApplied\": true,\n \"ontologyPackageRid\": null,\n \"publicProject\": false,\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.sampleObject\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.sampleObject\",\n \"propertyMapping\": {\n \"id\": {\n \"column\": \"id\",\n \"type\": \"column\",\n },\n \"name\": {\n \"column\": \"name\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.sampleObject\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.sampleObject\",\n \"displayMetadata\": {\n \"description\": \"Sample object description\",\n \"displayName\": \"Test Object\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"tests\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"id\",\n ],\n \"propertyTypes\": {\n \"id\": {\n \"apiName\": \"id\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": \"The ID of the test object\",\n \"displayName\": \"ID\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"name\": {\n \"apiName\": \"name\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": \"The name of the test object\",\n \"displayName\": \"Name\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"name\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Array property validation is correctly structured for actions\", () => {\n const objectWithArrays = defineObject({\n apiName: \"objectWithArrays\",\n displayName: \"Object With Arrays\",\n primaryKeyPropertyApiName: \"id\",\n titlePropertyApiName: \"id\",\n pluralDisplayName: \"Objects With Arrays\",\n properties: {\n \"id\": { type: \"string\", displayName: \"ID\" },\n \"tags\": { type: \"string\", array: true, displayName: \"Tags\" },\n \"numbers\": { type: \"integer\", array: true, displayName: \"Numbers\" },\n \"singleValue\": { type: \"string\", displayName: \"Single Value\" },\n },\n });\n\n const createAction = defineCreateObjectAction(objectWithArrays);\n const modifyAction = defineModifyObjectAction(objectWithArrays);\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-object-object-with-arrays\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addObjectRule\": {\n \"objectTypeId\": \"com.palantir.objectWithArrays\",\n \"propertyValues\": {\n \"id\": {\n \"parameterId\": \"id\",\n \"type\": \"parameterId\",\n },\n \"numbers\": {\n \"parameterId\": \"numbers\",\n \"type\": \"parameterId\",\n },\n \"singleValue\": {\n \"parameterId\": \"singleValue\",\n \"type\": \"parameterId\",\n },\n \"tags\": {\n \"parameterId\": \"tags\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"id\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"numbers\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"numericInput\": {},\n \"type\": \"numericInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"range\": {\n \"range\": {},\n \"type\": \"range\",\n },\n \"type\": \"range\",\n },\n \"required\": {\n \"listLengthValidation\": {\n \"maxLength\": undefined,\n \"minLength\": undefined,\n },\n \"type\": \"listLengthValidation\",\n },\n },\n },\n },\n \"singleValue\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"tags\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"listLengthValidation\": {\n \"maxLength\": undefined,\n \"minLength\": undefined,\n },\n \"type\": \"listLengthValidation\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-object-object-with-arrays\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create Object With Arrays\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.objectWithArrays\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"id\",\n \"tags\",\n \"numbers\",\n \"singleValue\",\n ],\n \"parameters\": {\n \"id\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"ID\",\n \"typeClasses\": [],\n },\n \"id\": \"id\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"numbers\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Numbers\",\n \"typeClasses\": [],\n },\n \"id\": \"numbers\",\n \"type\": {\n \"integerList\": {},\n \"type\": \"integerList\",\n },\n },\n \"singleValue\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Single Value\",\n \"typeClasses\": [],\n },\n \"id\": \"singleValue\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"tags\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Tags\",\n \"typeClasses\": [],\n },\n \"id\": \"tags\",\n \"type\": {\n \"stringList\": {},\n \"type\": \"stringList\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.modify-object-object-with-arrays\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyObjectRule\": {\n \"objectToModify\": \"objectToModifyParameter\",\n \"propertyValues\": {\n \"numbers\": {\n \"parameterId\": \"numbers\",\n \"type\": \"parameterId\",\n },\n \"singleValue\": {\n \"parameterId\": \"singleValue\",\n \"type\": \"parameterId\",\n },\n \"tags\": {\n \"parameterId\": \"tags\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"modifyObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"numbers\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"numericInput\": {},\n \"type\": \"numericInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"range\": {\n \"range\": {},\n \"type\": \"range\",\n },\n \"type\": \"range\",\n },\n \"required\": {\n \"listLengthValidation\": {\n \"maxLength\": undefined,\n \"minLength\": undefined,\n },\n \"type\": \"listLengthValidation\",\n },\n },\n },\n },\n \"objectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectQuery\": {\n \"objectQuery\": {},\n \"type\": \"objectQuery\",\n },\n \"type\": \"objectQuery\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"singleValue\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"notRequired\": {},\n \"type\": \"notRequired\",\n },\n },\n },\n },\n \"tags\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"listLengthValidation\": {\n \"maxLength\": undefined,\n \"minLength\": undefined,\n },\n \"type\": \"listLengthValidation\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.modify-object-object-with-arrays\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Modify Object With Arrays\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.objectWithArrays\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectToModifyParameter\",\n \"tags\",\n \"numbers\",\n \"singleValue\",\n ],\n \"parameters\": {\n \"numbers\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Numbers\",\n \"typeClasses\": [],\n },\n \"id\": \"numbers\",\n \"type\": {\n \"integerList\": {},\n \"type\": \"integerList\",\n },\n },\n \"objectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Modify object\",\n \"typeClasses\": [],\n },\n \"id\": \"objectToModifyParameter\",\n \"type\": {\n \"objectReference\": {\n \"objectTypeId\": \"com.palantir.objectWithArrays\",\n },\n \"type\": \"objectReference\",\n },\n },\n \"singleValue\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Single Value\",\n \"typeClasses\": [],\n },\n \"id\": \"singleValue\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"tags\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Tags\",\n \"typeClasses\": [],\n },\n \"id\": \"tags\",\n \"type\": {\n \"stringList\": {},\n \"type\": \"stringList\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.objectWithArrays\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.objectWithArrays\",\n \"propertyMapping\": {\n \"id\": {\n \"column\": \"id\",\n \"type\": \"column\",\n },\n \"numbers\": {\n \"column\": \"numbers\",\n \"type\": \"column\",\n },\n \"singleValue\": {\n \"column\": \"singleValue\",\n \"type\": \"column\",\n },\n \"tags\": {\n \"column\": \"tags\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.objectWithArrays\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.objectWithArrays\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Object With Arrays\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Objects With Arrays\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"id\",\n ],\n \"propertyTypes\": {\n \"id\": {\n \"apiName\": \"id\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"ID\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"numbers\": {\n \"apiName\": \"numbers\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Numbers\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"array\": {\n \"subtype\": {\n \"integer\": {},\n \"type\": \"integer\",\n },\n },\n \"type\": \"array\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"singleValue\": {\n \"apiName\": \"singleValue\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Single Value\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"tags\": {\n \"apiName\": \"tags\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Tags\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"array\": {\n \"subtype\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n },\n \"type\": \"array\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"id\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n });\n describe(\"Imports\", () => {\n it(\"Legacy importing works\", () => {\n const id = importSharedPropertyType({\n apiName: \"id\",\n packageName: \"com.palantir.core.ontology.types\",\n typeHint: \"string\",\n });\n const myInterface = defineInterface({\n apiName: \"myInterface\",\n properties: {\n id,\n },\n });\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.myInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.myInterface\",\n \"displayMetadata\": {\n \"description\": \"myInterface\",\n \"displayName\": \"myInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.core.ontology.types.id\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.core.ontology.types.id\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"com.palantir.core.ontology.types.id\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [\n {\n \"apiName\": \"com.palantir.core.ontology.types.id\",\n \"description\": undefined,\n \"displayName\": \"com.palantir.core.ontology.types.id\",\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n },\n ],\n },\n }\n `);\n });\n it(\"Simple importing works\", () => {\n // does the same as \"import { spt } from '@other/package'\"\n const spt: SharedPropertyType = {\n apiName: \"com.other.package.spt\",\n nonNameSpacedApiName: \"spt\",\n type: \"string\",\n __type: OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE,\n };\n importOntologyEntity(spt);\n\n const myInterface = defineInterface({\n apiName: \"myInterface\",\n properties: {\n spt,\n },\n });\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.myInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.myInterface\",\n \"displayMetadata\": {\n \"description\": \"myInterface\",\n \"displayName\": \"myInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.other.package.spt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.other.package.spt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"com.other.package.spt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [\n {\n \"apiName\": \"com.other.package.spt\",\n \"description\": undefined,\n \"displayName\": \"com.other.package.spt\",\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n },\n ],\n },\n }\n `);\n });\n it(\"Export files are generated correctly\", async () => {\n const generatedDir = path.resolve(path.join(\n __dirname,\n \"..\",\n \"generatedNoCheck\",\n \"export_files_are_generated_correctly\",\n ));\n await defineOntology(\"com.my.package.\", () => {\n const mySpt = defineSharedPropertyType({\n apiName: \"mySpt\",\n type: \"string\",\n });\n const myInterface = defineInterface({\n apiName: \"myInterface\",\n properties: {\n mySpt,\n },\n });\n const myObject = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"My Object\",\n pluralDisplayName: \"myObjects\",\n apiName: \"myObject\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n implementsInterfaces: [{\n implements: myInterface,\n propertyMapping: [{\n interfaceProperty: \"com.my.package.mySpt\",\n mapsTo: \"bar\",\n }],\n }],\n });\n }, generatedDir);\n\n expect(\n fs.readFileSync(\n path.join(generatedDir, \"codegen/interface-types/myInterface.ts\"),\n \"utf8\",\n ),\n ).toMatchInlineSnapshot(`\n \"\n import { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\n import type { InterfaceType } from '@osdk/maker';\n\n const myInterface_base: InterfaceType = {\n \"apiName\": \"com.my.package.myInterface\",\n \"displayMetadata\": {\n \"displayName\": \"myInterface\",\n \"description\": \"myInterface\"\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"status\": {\n \"type\": \"active\",\n \"active\": {}\n },\n \"propertiesV2\": {\n \"com.my.package.mySpt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"apiName\": \"com.my.package.mySpt\",\n \"type\": \"string\",\n \"nonNameSpacedApiName\": \"mySpt\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n }\n }\n },\n \"searchable\": true,\n \"__type\": OntologyEntityTypeEnum.INTERFACE_TYPE\n } as unknown as InterfaceType;\n \n export const myInterface: InterfaceType = wrapWithProxy(myInterface_base);\n \"\n `);\n\n expect(\n fs.readFileSync(\n path.join(generatedDir, \"codegen/object-types/myObject.ts\"),\n \"utf8\",\n ),\n ).toMatchInlineSnapshot(`\n \"\n import { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\n import type { ObjectType } from '@osdk/maker';\n\n const myObject_base: ObjectType = {\n \"titlePropertyApiName\": \"bar\",\n \"displayName\": \"My Object\",\n \"pluralDisplayName\": \"myObjects\",\n \"apiName\": \"com.my.package.myObject\",\n \"primaryKeyPropertyApiName\": \"bar\",\n \"properties\": [\n {\n \"type\": \"string\",\n \"apiName\": \"bar\",\n \"displayName\": \"Bar\"\n }\n ],\n \"implementsInterfaces\": [\n {\n \"implements\": {\n \"apiName\": \"com.my.package.myInterface\",\n \"displayMetadata\": {\n \"displayName\": \"myInterface\",\n \"description\": \"myInterface\"\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"status\": {\n \"type\": \"active\",\n \"active\": {}\n },\n \"propertiesV2\": {\n \"com.my.package.mySpt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"apiName\": \"com.my.package.mySpt\",\n \"type\": \"string\",\n \"nonNameSpacedApiName\": \"mySpt\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n }\n }\n },\n \"searchable\": true,\n \"__type\": OntologyEntityTypeEnum.INTERFACE_TYPE\n },\n \"propertyMapping\": [\n {\n \"interfaceProperty\": \"com.my.package.mySpt\",\n \"mapsTo\": \"bar\"\n }\n ]\n }\n ],\n \"__type\": OntologyEntityTypeEnum.OBJECT_TYPE\n } as unknown as ObjectType;\n \n export const myObject: ObjectType = wrapWithProxy(myObject_base);\n \"\n `);\n\n expect(\n fs.readFileSync(\n path.join(generatedDir, \"codegen/shared-property-types/mySpt.ts\"),\n \"utf8\",\n ),\n ).toMatchInlineSnapshot(`\n \"\n import { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\n import type { SharedPropertyType } from '@osdk/maker';\n\n const mySpt_base: SharedPropertyType = {\n \"apiName\": \"com.my.package.mySpt\",\n \"type\": \"string\",\n \"nonNameSpacedApiName\": \"mySpt\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n } as unknown as SharedPropertyType;\n \n export const mySpt: SharedPropertyType = wrapWithProxy(mySpt_base);\n \"\n `);\n fs.rmSync(path.resolve(path.join(generatedDir, \"..\")), {\n recursive: true,\n force: true,\n });\n });\n it(\"Extended interfaces are propagated to the static objects\", async () => {\n const generatedDir = path.resolve(path.join(\n __dirname,\n \"..\",\n \"generatedNoCheck\",\n \"extended_interfaces_are_propagated_to_the_static_objects\",\n ));\n await defineOntology(\"com.palantir.\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n property1: \"string\",\n },\n });\n const childInterface = defineInterface({\n apiName: \"childInterface\",\n properties: {\n property2: \"string\",\n },\n extends: [parentInterface],\n });\n }, generatedDir);\n\n expect(\n fs.readFileSync(\n path.join(generatedDir, \"codegen/interface-types/childInterface.ts\"),\n \"utf8\",\n ),\n ).toMatchInlineSnapshot(`\n \"\n import { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\n import type { InterfaceType } from '@osdk/maker';\n\n const childInterface_base: InterfaceType = {\n \"apiName\": \"com.palantir.childInterface\",\n \"displayMetadata\": {\n \"displayName\": \"childInterface\",\n \"description\": \"childInterface\"\n },\n \"extendsInterfaces\": [\n {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"displayName\": \"parentInterface\",\n \"description\": \"parentInterface\"\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"status\": {\n \"type\": \"active\",\n \"active\": {}\n },\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"apiName\": \"com.palantir.property1\",\n \"displayName\": \"property1\",\n \"type\": \"string\",\n \"array\": false,\n \"nonNameSpacedApiName\": \"property1\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n }\n }\n },\n \"searchable\": true,\n \"__type\": OntologyEntityTypeEnum.INTERFACE_TYPE\n }\n ],\n \"links\": [],\n \"status\": {\n \"type\": \"active\",\n \"active\": {}\n },\n \"propertiesV2\": {\n \"com.palantir.property2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"apiName\": \"com.palantir.property2\",\n \"displayName\": \"property2\",\n \"type\": \"string\",\n \"array\": false,\n \"nonNameSpacedApiName\": \"property2\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n }\n }\n },\n \"searchable\": true,\n \"__type\": OntologyEntityTypeEnum.INTERFACE_TYPE\n } as unknown as InterfaceType;\n \n export const childInterface: InterfaceType = wrapWithProxy(childInterface_base);\n \"\n `);\n fs.rmSync(path.join(generatedDir, \"..\"), {\n recursive: true,\n force: true,\n });\n });\n it(\"Extended interface properties are checked in object type property mapping\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n iProperty1: \"string\",\n },\n });\n const childInterface = defineInterface({\n apiName: \"childInterface\",\n properties: {\n iProperty2: \"string\",\n },\n extends: [parentInterface],\n });\n const objectDef = defineObject({\n apiName: \"objectDef\",\n primaryKeyPropertyApiName: \"property1\",\n titlePropertyApiName: \"property1\",\n displayName: \"objectDef\",\n pluralDisplayName: \"objectDefs\",\n properties: {\n \"property1\": { type: \"string\", displayName: \"property1\" },\n \"property2\": { type: \"string\", displayName: \"property2\" },\n },\n implementsInterfaces: [\n {\n implements: childInterface,\n propertyMapping: [\n {\n interfaceProperty: \"com.palantir.iProperty1\",\n mapsTo: \"property1\",\n },\n {\n interfaceProperty: \"com.palantir.iProperty2\",\n mapsTo: \"property2\",\n },\n ],\n },\n ],\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.childInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.childInterface\",\n \"displayMetadata\": {\n \"description\": \"childInterface\",\n \"displayName\": \"childInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [\n \"com.palantir.parentInterface\",\n ],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.iProperty2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.iProperty2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"iProperty2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.iProperty1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.iProperty1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"iProperty1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.objectDef\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.objectDef\",\n \"propertyMapping\": {\n \"property1\": {\n \"column\": \"property1\",\n \"type\": \"column\",\n },\n \"property2\": {\n \"column\": \"property2\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.objectDef\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.objectDef\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"objectDef\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"objectDefs\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [\n {\n \"interfaceTypeApiName\": \"com.palantir.childInterface\",\n \"linksV2\": {},\n \"properties\": {\n \"com.palantir.iProperty1\": {\n \"propertyTypeRid\": \"property1\",\n },\n \"com.palantir.iProperty2\": {\n \"propertyTypeRid\": \"property2\",\n },\n },\n \"propertiesV2\": {},\n },\n ],\n \"primaryKeys\": [\n \"property1\",\n ],\n \"propertyTypes\": {\n \"property1\": {\n \"apiName\": \"property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"property2\": {\n \"apiName\": \"property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"property1\",\n },\n },\n },\n \"sharedPropertyTypes\": {\n \"com.palantir.iProperty1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.iProperty1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"iProperty1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.iProperty2\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.iProperty2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"iProperty2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n });\n describe(\"Dependencies\", () => {\n it(\"Correctly adds dependencies\", async () => {\n const generatedDir = path.resolve(path.join(\n __dirname,\n \"..\",\n \"generatedNoCheck\",\n \"correctly_adds_dependencies\",\n ));\n await defineOntology(\n \"com.palantir.\",\n () => {\n addDependency(\"com.palantir\", fileURLToPath(import.meta.url));\n defineInterface({\n apiName: \"myInterface\",\n properties: {\n property1: \"string\",\n },\n });\n },\n generatedDir,\n path.join(generatedDir, \"dependencies.json\"),\n );\n\n const packageJson = JSON.parse(\n fs.readFileSync(\n path.join(__dirname, \"..\", \"..\", \"package.json\"),\n \"utf8\",\n ),\n );\n expect(packageJson.version).toBeDefined();\n\n expect(\n fs.readFileSync(path.join(generatedDir, \"dependencies.json\"), \"utf8\"),\n ).toMatchInlineSnapshot(`\n \"{\n \"com.palantir\": \"${packageJson.version}\"\n }\"\n `);\n\n expect(\n fs.readFileSync(path.join(generatedDir, \"index.ts\"), \"utf8\"),\n )\n .toContain(\n `addDependency(\"com.palantir\", new URL(import.meta.url).pathname);`,\n );\n\n fs.rmSync(path.join(generatedDir, \"..\"), {\n recursive: true,\n force: true,\n });\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,EAAE,MAAM,IAAI;AACxB,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AACnC,SAASC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AACzD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SACEC,YAAY,EACZC,iCAAiC,EACjCC,wBAAwB,EACxBC,wBAAwB,EACxBC,iCAAiC,EACjCC,wBAAwB,QACnB,mBAAmB;AAC1B,SAASC,wBAAwB,QAAQ,sBAAsB;AAC/D,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,6BAA6B,QAAQ,oCAAoC;AAClF,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SACEC,cAAc,EACdC,wBAAwB,EACxBC,qBAAqB,QAChB,qBAAqB;AAC5B,SAASC,wBAAwB,QAAQ,gBAAgB;AACzD,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAEEC,sBAAsB,QAEjB,YAAY;AAEnBrB,QAAQ,CAAC,mBAAmB,EAAE,MAAM;EAClCD,UAAU,CAAC,YAAY;IACrB,MAAMgB,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC;EAC1D,CAAC,CAAC;EAEFf,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC3BE,EAAE,CAAC,kDAAkD,EAAE,MAAM;MAC3DD,MAAM,CAAC,MACLkB,eAAe,CAAC;QACdG,OAAO,EAAE,SAAS;QAClBC,WAAW,EAAE,aAAa;QAC1BC,IAAI,EAAE;UACJ,MAAM,EAAE,SAAS;UACjBC,WAAW,EAAE,CAAC;YAAEC,UAAU,EAAE;cAAE,eAAe,EAAE,CAAC,YAAY;YAAE;UAAE,CAAC;QACnE,CAAC;QACDC,OAAO,EAAE;MACX,CAAC,CACH,CAAC,CAACC,kCAAkC,CAClC,0DACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,sEAAsE,EAAE,MAAM;MAC/E,MAAM2B,mBAAmB,GAAGV,eAAe,CAAC;QAC1CG,OAAO,EAAE,uBAAuB;QAChCC,WAAW,EAAE,yBAAyB;QACtCO,WAAW,EAAE,2CAA2C;QACxDN,IAAI,EAAE;UACJ,MAAM,EAAE,QAAQ;UAChBC,WAAW,EAAE,CACX;YACEC,UAAU,EAAE;cACVF,IAAI,EAAE,QAAQ;cACdO,MAAM,EAAE;gBACNC,OAAO,EAAE,CAAC;gBACVC,OAAO,EAAE;cACX;YACF,CAAC;YACDC,cAAc,EAAE;cACdC,OAAO,EAAE;YACX;UACF,CAAC;QAEL,CAAC;QACDR,OAAO,EAAE;MACX,CAAC,CAAC;MAEab,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,mBAAmB;QACzCb,WAAW,EAAE,aAAa;QAC1Bc,iBAAiB,EAAE,cAAc;QACjCf,OAAO,EAAE,YAAY;QACrBgB,yBAAyB,EAAE,mBAAmB;QAC9CC,UAAU,EAAE;UACV,mBAAmB,EAAE;YACnBf,IAAI,EAAE,QAAQ;YACdD,WAAW,EAAE,oBAAoB;YACjCiB,SAAS,EAAEX;UACb;QACF;MACF,CAAC,CAAC;MAEF,MAAMY,QAAQ,GAAGzB,wBAAwB,CAAC,CAAC;MAC3C,MAAM0B,kBAAkB,GACtBD,QAAQ,CAACE,SAAS,CAACC,WAAW,CAAC,yBAAyB,CAAC,CACtDC,UAAU,CAACC,aAAa,CAAC,mBAAmB,CAAC;MAElD7C,MAAM,CAACyC,kBAAkB,CAACF,SAAS,CAAC,CAACO,OAAO,CAAC;QAC3CzB,OAAO,EAAE,uBAAuB;QAChCK,OAAO,EAAE;MACX,CAAC,CAAC;MAEF1B,MAAM,CAACyC,kBAAkB,CAACM,eAAe,CAAC,CAACC,WAAW,CAAC,CAAC;MACxDhD,MAAM,CAACyC,kBAAkB,CAACM,eAAe,EAAEE,uBAAuB,CAAC,CAChEC,YAAY,CAAC,CAAC,CAAC;MAElB,MAAMC,iBAAiB,GAAGV,kBAAkB,CAACM,eAAe,EACxDE,uBAAuB,CAAC,CAAC,CAAC;MAC9BjD,MAAM,CAACmD,iBAAiB,EAAE3B,WAAW,EAAED,IAAI,CAAC,CAAC6B,IAAI,CAAC,QAAQ,CAAC;MAC3DpD,MAAM,CACJ,CAACmD,iBAAiB,EAAE3B,WAAW,EAG5B6B,MAAM,CAACvB,MAAM,CAACC,OACnB,CAAC,CAACqB,IAAI,CAAC,CAAC,CAAC;MACTpD,MAAM,CACJ,CAACmD,iBAAiB,EAAE3B,WAAW,EAG5B6B,MAAM,CAACvB,MAAM,CAACE,OACnB,CAAC,CAACoB,IAAI,CAAC,EAAE,CAAC;MACVpD,MAAM,CAACmD,iBAAiB,EAAElB,cAAc,EAAEC,OAAO,CAAC,CAACkB,IAAI,CACrD,4CACF,CAAC;IACH,CAAC,CAAC;IAEFnD,EAAE,CAAC,mCAAmC,EAAE,MAAM;MAC5CiB,eAAe,CAAC;QACdG,OAAO,EAAE,SAAS;QAClBC,WAAW,EAAE,aAAa;QAC1BC,IAAI,EAAE;UACJ,MAAM,EAAE,SAAS;UACjBC,WAAW,EAAE,CAAC;YAAEC,UAAU,EAAE;cAAE,eAAe,EAAE,CAAC,YAAY;YAAE;UAAE,CAAC;QACnE,CAAC;QACDC,OAAO,EAAE;MACX,CAAC,CAAC;MACF1B,MAAM,CAACgB,qBAAqB,CAAC,CAAC,CAAC,CAACsC,qBAAqB,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IACN,CAAC,CAAC;;IAEF;IACA;IACAxC,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC;EACpD,CAAC,CAAC;EAEFf,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC3BE,EAAE,CAAC,iDAAiD,EAAE,MAAM;MAC1DS,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAM,CAAC,CAAC;MACnCrB,MAAM,CAAC,MAAM;QACXU,eAAe,CAAC;UAAEW,OAAO,EAAE;QAAM,CAAC,CAAC;MACrC,CAAC,CAAC,CAACM,kCAAkC,CACnC,sEACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,iCAAiC,EAAE,MAAM;MAC1C,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAM,CAAC,CAAC;MAClDrB,MAAM,CAACuD,MAAM,CAACC,eAAe,CAAClC,WAAW,CAAC,CAAC8B,IAAI,CAAC,KAAK,CAAC;IACxD,CAAC,CAAC;IAEFnD,EAAE,CAAC,qCAAqC,EAAE,MAAM;MAC9C,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;QAAEW,OAAO,EAAE,KAAK;QAAEC,WAAW,EAAE;MAAI,CAAC,CAAC;MACpEtB,MAAM,CAACuD,MAAM,CAACC,eAAe,CAAC3B,WAAW,CAAC,CAACuB,IAAI,CAAC,GAAG,CAAC;IACtD,CAAC,CAAC;IAEFnD,EAAE,CAAC,gDAAgD,EAAE,MAAM;MACzD,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAM,CAAC,CAAC;MAClDrB,MAAM,CAACuD,MAAM,CAACC,eAAe,CAAC3B,WAAW,CAAC,CAACuB,IAAI,CAAC,KAAK,CAAC;IACxD,CAAC,CAAC;IAEFrD,QAAQ,CAAC,WAAW,EAAE,MAAM;MAC1BE,EAAE,CAAC,mBAAmB,EAAE,MAAM;QAC5BS,eAAe,CAAC;UACdW,OAAO,EAAE,KAAK;UACdiB,UAAU,EAAE;YACVmB,GAAG,EAAE;UACP;QACF,CAAC,CAAC;QAEFzD,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;MACJ,CAAC,CAAC;MAEFrD,EAAE,CAAC,gCAAgC,EAAE,MAAM;QACzCgB,wBAAwB,CAAC;UACvBI,OAAO,EAAE,KAAK;UACdE,IAAI,EAAE;QACR,CAAC,CAAC;QAEFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;QAEFtD,MAAM,CAAC,MAAM;UACXU,eAAe,CAAC;YACdW,OAAO,EAAE,KAAK;YACdiB,UAAU,EAAE;cACVmB,GAAG,EAAE;YACP;UACF,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC9B,kCAAkC,CACnC,iFACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF1B,EAAE,CAAC,uDAAuD,EAAE,MAAM;MAChE,MAAMyD,eAAe,GAAGhD,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1BiB,UAAU,EAAE;UACVqB,SAAS,EAAE;QACb;MACF,CAAC,CAAC;MACqBjD,eAAe,CAAC;QACrCW,OAAO,EAAE,gBAAgB;QACzBiB,UAAU,EAAE;UACVsB,SAAS,EAAE;QACb,CAAC;QACDC,OAAO,EAAE,CAACH,eAAe;MAC3B,CAAC,CAAC;MAEF1D,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,8BAA8B,EAAE,MAAM;MACfS,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1BiB,UAAU,EAAE;UACVqB,SAAS,EAAE;YAAEG,QAAQ,EAAE,KAAK;YAAEC,kBAAkB,EAAE;UAAS;QAC7D;MACF,CAAC,CAAC;MAEF/D,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,iDAAiD,EAAE,MAAM;MAC1D,MAAMyD,eAAe,GAAGhD,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1BiB,UAAU,EAAE;UACVqB,SAAS,EAAE;QACb;MACF,CAAC,CAAC;MACqBjD,eAAe,CAAC;QACrCW,OAAO,EAAE,gBAAgB;QACzBiB,UAAU,EAAE;UACVsB,SAAS,EAAE;QACb,CAAC;QACDC,OAAO,EAAEH;MACX,CAAC,CAAC;MAEF1D,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,gCAAgC,EAAE,MAAM;MACjBS,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1B2C,UAAU,EAAE;MACd,CAAC,CAAC;MAEFhE,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvD,QAAQ,CAAC,MAAM,EAAE,MAAM;IACrB,IAAIkE,CAAgB;IACpB,IAAIC,CAAgB;IAEpBpE,UAAU,CAAC,MAAM;MACfmE,CAAC,GAAGvD,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAI,CAAC,CAAC;MACrC6C,CAAC,GAAGxD,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAI,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFpB,EAAE,CAAC,mBAAmB,EAAE,MAAM;MAC5BD,MAAM,CAACiE,CAAC,CAAC,CAACE,GAAG,CAACC,aAAa,CAAC,CAAC;MAC7BzD,6BAA6B,CAAC;QAC5B0D,IAAI,EAAEJ,CAAC;QACPK,KAAK,EAAEJ,CAAC;QACR7C,OAAO,EAAE;MACX,CAAC,CAAC;MAEFrB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,iBAAiB,EAAE,MAAM;MAC1BU,6BAA6B,CAAC;QAC5B0D,IAAI,EAAEJ,CAAC;QACPM,MAAM,EAAEL,CAAC;QACT7C,OAAO,EAAE;MACX,CAAC,CAAC;MAEFrB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvD,QAAQ,CAAC,MAAM,EAAE,MAAM;IACrBE,EAAE,CAAC,2CAA2C,EAAE,MAAM;MACpDgB,wBAAwB,CAAC;QACvBI,OAAO,EAAE,KAAK;QACdE,IAAI,EAAE;MACR,CAAC,CAAC;MAEFvB,MAAM,CAAC,MAAM;QACXiB,wBAAwB,CAAC;UACvBI,OAAO,EAAE,KAAK;UACdE,IAAI,EAAE;QACR,CAAC,CAAC;MACJ,CAAC,CAAC,CAACI,kCAAkC,CACnC,iFACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF1B,EAAE,CAAC,uBAAuB,EAAE,MAAM;IAChC,MAAMuE,MAAM,GAAGvD,wBAAwB,CAAC;MACtCI,OAAO,EAAE,QAAQ;MACjBE,IAAI,EAAE;IACR,CAAC,CAAC;IAEmBb,eAAe,CAAC;MACnCW,OAAO,EAAE,cAAc;MACvBC,WAAW,EAAE,eAAe;MAC5BgB,UAAU,EAAE;QACVkC;MACF,CAAC;MACDC,IAAI,EAAE;QAAEC,KAAK,EAAE,QAAQ;QAAEC,OAAO,EAAE;MAAW;IAC/C,CAAC,CAAC;IAEF3E,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACJ,CAAC,CAAC;EAEFrD,EAAE,CAAC,+CAA+C,EAAE,MAAM;IACzCgB,wBAAwB,CAAC;MACtCI,OAAO,EAAE,QAAQ;MACjBE,IAAI,EAAE;QACJA,IAAI,EAAE,QAAQ;QACdqD,gBAAgB,EAAE;UAChB,gBAAgB,EAAE,SAAS;UAC3B,iBAAiB,EAAE;YACjBC,SAAS,EAAE,MAAM;YACjBrB,eAAe,EAAE;cACflC,WAAW,EAAE,kBAAkB;cAC/BO,WAAW,EAAEiD;YACf;UACF;QACF;MACF;IACF,CAAC,CAAC;IAEF9E,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;EACN,CAAC,CAAC;EAEFrD,EAAE,CAAC,mCAAmC,EAAE,MAAM;IAC5C,MAAM8E,GAAG,GAAG9D,wBAAwB,CAAC;MACnCI,OAAO,EAAE,KAAK;MACdE,IAAI,EAAE;QACJA,IAAI,EAAE,QAAQ;QACdyD,UAAU,EAAE,IAAI;QAChBC,gCAAgC,EAAE,IAAI;QACtCC,qBAAqB,EAAE;MACzB;IACF,CAAC,CAAC;IAEFxE,eAAe,CAAC;MACdW,OAAO,EAAE,WAAW;MACpBiB,UAAU,EAAE;QAAEmB,GAAG,EAAEsB;MAAI;IACzB,CAAC,CAAC;IAEF/E,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACJ,CAAC,CAAC;EAEFrD,EAAE,CAAC,qCAAqC,EAAE,MAAM;IAC9C,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;MAAEW,OAAO,EAAE;IAAM,CAAC,CAAC;IAClDrB,MAAM,CAACuD,MAAM,CAAC4B,MAAM,CAAC,CAACrC,OAAO,CAAC;MAAEvB,IAAI,EAAE,QAAQ;MAAE6D,MAAM,EAAE,CAAC;IAAE,CAAC,CAAC;EAC/D,CAAC,CAAC;EAEFnF,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAK1D,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;MAC7BW,OAAO,EAAE,KAAK;MACd8D,MAAM,EAAE;QAAE5D,IAAI,EAAE;MAAe;IACjC,CAAC,CAAC;IACFvB,MAAM,CAACuD,MAAM,CAAC4B,MAAM,CAAC,CAACrC,OAAO,CARF;MACzBvB,IAAI,EAAE,cAAc;MACpB8D,YAAY,EAAE,CAAC;IACjB,CAKgD,CAAC;EACnD,CAAC,CAAC;EAEFpF,EAAE,CAAC,+CAA+C,EAAE,MAAM;IAQxD,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;MAC7BW,OAAO,EAAE,KAAK;MACd8D,MAAM,EAAE;QAAE5D,IAAI,EAAE,YAAY;QAAEW,OAAO,EAAE,KAAK;QAAEoD,QAAQ,EAAE;MAAM;IAChE,CAAC,CAAC;IACFtF,MAAM,CAACuD,MAAM,CAAC4B,MAAM,CAAC,CAACrC,OAAO,CAXJ;MACvBvB,IAAI,EAAE,YAAY;MAClBgE,UAAU,EAAE;QACVrD,OAAO,EAAE,KAAK;QACdoD,QAAQ,EAAE;MACZ;IACF,CAK8C,CAAC;EACjD,CAAC,CAAC;EAEFvF,QAAQ,CAAC,SAAS,EAAE,MAAM;IACxBE,EAAE,CAAC,gDAAgD,EAAE,MAAM;MACzD,MAAM8E,GAAG,GAAG9D,wBAAwB,CAAC;QACnCI,OAAO,EAAE,KAAK;QACdE,IAAI,EAAE;MACR,CAAC,CAAC;MAEF,MAAMiE,MAAM,GAAG9E,eAAe,CAAC;QAC7BW,OAAO,EAAE,WAAW;QACpBiB,UAAU,EAAE;UAAEmB,GAAG,EAAEsB;QAAI;MACzB,CAAC,CAAC;MAEF/E,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,MAAM;UAC5Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE;QAC1C,CAAC,CAAC;MACJ,CAAC,CAAC,CAACI,kCAAkC,CACnC,6EACF,CAAC;MAED3B,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,MAAM;UACjCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE;QAC1C,CAAC,CAAC;MACJ,CAAC,CAAC,CAACI,kCAAkC,CACnC,mFACF,CAAC;MAED3B,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE,CAAC;UACzCkE,oBAAoB,EAAE,CAAC;YACrBC,UAAU,EAAEF,MAAM;YAClBG,eAAe,EAAE,CAAC;cAChBC,iBAAiB,EAAE,kBAAkB;cACrCC,MAAM,EAAE;YACV,CAAC;UACH,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,CAAC,CAAClE,kCAAkC,CACnC,4IACF,CAAC;MAED3B,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE,CAAC;UACzCkE,oBAAoB,EAAE,CAAC;YACrBC,UAAU,EAAEF,MAAM;YAClBG,eAAe,EAAE,CAAC;cAChBC,iBAAiB,EAAE,mBAAmB;cACtCC,MAAM,EAAE;YACV,CAAC,EAAE;cACDD,iBAAiB,EAAE,kBAAkB;cACrCC,MAAM,EAAE;YACV,CAAC;UACH,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,CAAC,CAAClE,kCAAkC,CACnC,wIACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,0BAA0B,EAAE,MAAM;MACnC,MAAM8E,GAAG,GAAG9D,wBAAwB,CAAC;QACnCI,OAAO,EAAE,KAAK;QACdE,IAAI,EAAE;MACR,CAAC,CAAC;MAEF,MAAMiE,MAAM,GAAG9E,eAAe,CAAC;QAC7BW,OAAO,EAAE,WAAW;QACpBiB,UAAU,EAAE;UAAEmB,GAAG,EAAEsB;QAAI;MACzB,CAAC,CAAC;MAEalE,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,KAAK,EAAE;YAAEf,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAM,CAAC;UAC7C,WAAW,EAAE;YACXC,IAAI,EAAE,QAAQ;YACduE,KAAK,EAAE,IAAI;YACXxE,WAAW,EAAE;UACf,CAAC;UACD,UAAU,EAAE;YACVC,IAAI,EAAE;cACJA,IAAI,EAAE,QAAQ;cACdqD,gBAAgB,EAAE;gBAAEmB,GAAG,EAAE,QAAQ;gBAAEC,GAAG,EAAE;cAAS;YACnD,CAAC;YACD1E,WAAW,EAAE;UACf;QACF,CAAC;QACDmE,oBAAoB,EAAE,CAAC;UACrBC,UAAU,EAAEF,MAAM;UAClBG,eAAe,EAAE,CAAC;YAChBC,iBAAiB,EAAE,KAAK;YACxBC,MAAM,EAAE;UACV,CAAC;QACH,CAAC;MACH,CAAC,CAAC;MAEF7F,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IACFrD,EAAE,CAAC,wCAAwC,EAAE,MAAM;MACjD,MAAMgG,MAAM,GAAGpF,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UAAE,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE;MAC1C,CAAC,CAAC;MAEF,MAAM2E,WAAW,GAAGrF,YAAY,CAAC;QAC/BsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,MAAM;QACnBc,iBAAiB,EAAE,MAAM;QACzBf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UAAE,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAAE;MACtE,CAAC,CAAC;MAEFX,UAAU,CAAC;QACTS,OAAO,EAAE,WAAW;QACpB8E,GAAG,EAAE;UACHF,MAAM,EAAEA,MAAM;UACdG,QAAQ,EAAE;YACR/E,OAAO,EAAE,QAAQ;YACjBC,WAAW,EAAE,KAAK;YAClBc,iBAAiB,EAAE;UACrB;QACF,CAAC;QACDmC,MAAM,EAAE;UACN0B,MAAM,EAAEC,WAAW;UACnBE,QAAQ,EAAE;YACR9E,WAAW,EAAE,MAAM;YACnBc,iBAAiB,EAAE,QAAQ;YAC3Bf,OAAO,EAAE;UACX;QACF,CAAC;QACDgF,sBAAsB,EAAE;MAC1B,CAAC,CAAC;MAEFrG,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,yCAAyC,EAAE,MAAM;MAClD,MAAMgG,MAAM,GAAGpF,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UAAE,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE;MAC1C,CAAC,CAAC;MAEF,MAAM2E,WAAW,GAAGrF,YAAY,CAAC;QAC/BsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,MAAM;QACnBc,iBAAiB,EAAE,MAAM;QACzBf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UAAE,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAAE;MACtE,CAAC,CAAC;MAEFX,UAAU,CAAC;QACTS,OAAO,EAAE,WAAW;QACpBiF,IAAI,EAAE;UACJL,MAAM,EAAEA,MAAM;UACdG,QAAQ,EAAE;YACR9E,WAAW,EAAE,KAAK;YAClBc,iBAAiB,EAAE,MAAM;YACzBf,OAAO,EAAE;UACX;QACF,CAAC;QACDkD,MAAM,EAAE;UACN0B,MAAM,EAAEC,WAAW;UACnBE,QAAQ,EAAE;YACR9E,WAAW,EAAE,MAAM;YACnBc,iBAAiB,EAAE,QAAQ;YAC3Bf,OAAO,EAAE;UACX;QACF;MACF,CAAC,CAAC;MACFrB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,+CAA+C,EAAE,MAAM;MACxD,MAAMgG,MAAM,GAAGpF,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UAAE,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE;MAC1C,CAAC,CAAC;MAEF,MAAM2E,WAAW,GAAGrF,YAAY,CAAC;QAC/BsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,MAAM;QACnBc,iBAAiB,EAAE,MAAM;QACzBf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UAAE,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAAE;MACtE,CAAC,CAAC;MAEFX,UAAU,CAAC;QACTS,OAAO,EAAE,WAAW;QACpB8E,GAAG,EAAE;UACHF,MAAM,EAAEA,MAAM;UACdG,QAAQ,EAAE;YACR/E,OAAO,EAAE;UACX;QACF,CAAC;QACDkD,MAAM,EAAE;UACN0B,MAAM,EAAEC,WAAW;UACnBE,QAAQ,EAAE;YACR/E,OAAO,EAAE;UACX;QACF,CAAC;QACDgF,sBAAsB,EAAE;MAC1B,CAAC,CAAC;MAEFrG,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,sDAAsD,EAAE,MAAM;MACnCY,YAAY,CAAC;QACvCsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,qBAAqB;QAClCc,iBAAiB,EAAE,qBAAqB;QACxCf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UAAE,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE,CAAC;QACzCgF,UAAU,EAAE;UAAEhF,IAAI,EAAE;QAAU;MAChC,CAAC,CAAC;MAEoCV,YAAY,CAAC;QACjDsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,+BAA+B;QAC5Cc,iBAAiB,EAAE,+BAA+B;QAClDf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UAAE,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAAE,CAAC;QACrEgF,UAAU,EAAE;UAAEhF,IAAI,EAAE;QAAS;MAC/B,CAAC,CAAC;MAEsCV,YAAY,CAAC;QACnDsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,iCAAiC;QAC9Cc,iBAAiB,EAAE,iCAAiC;QACpDf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE,CAAC;QAC1CgF,UAAU,EAAE;UAAEhF,IAAI,EAAE,QAAQ;UAAEiF,eAAe,EAAE;QAAO;MACxD,CAAC,CAAC;MAEFxG,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,kDAAkD,EAAE,MAAM;MAC5CY,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAC1B,CAAC;QACDgF,UAAU,EAAE;UAAEhF,IAAI,EAAE;QAAiB;MACvC,CAAC,CAAC;MACFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,2CAA2C,EAAE,MAAM;MACrCY,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UACV,KAAK,EAAE;YACLf,IAAI,EAAE,QAAQ;YACdkF,QAAQ,EAAE;UACZ,CAAC;UACD,MAAM,EAAE;YACNlF,IAAI,EAAE;UACR;QACF;MACF,CAAC,CAAC;MACFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,4CAA4C,EAAE,MAAM;MACrDD,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE,QAAQ;cAAEkF,QAAQ,EAAE;YAAK;UAAE;QAC1D,CAAC,CAAC;MACJ,CAAC,CAAC,CAAC9E,kCAAkC,CACnC,uFACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,2DAA2D,EAAE,MAAM;MACpED,MAAM,CAAC,MACLa,YAAY,CAAC;QACXsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,iCAAiC;QAC9Cc,iBAAiB,EAAE,iCAAiC;QACpDf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE,CAAC;QAC1CgF,UAAU,EAAE;UACVhF,IAAI,EAAE,QAAQ;UACdiF,eAAe,EAAE;QACnB;MACF,CAAC,CACH,CAAC,CAAC7E,kCAAkC,CAClC,oIACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,iDAAiD,EAAE,MAAM;MACpCY,YAAY,CAAC;QACjCsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,eAAe;QAC5Bc,iBAAiB,EAAE,eAAe;QAClCf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAiB,CAAC;UAClC,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAC1B,CAAC;QACDgF,UAAU,EAAE;UAAEhF,IAAI,EAAE;QAAS;MAC/B,CAAC,CAAC;MAEFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvD,QAAQ,CAAC,qBAAqB,EAAE,MAAM;IACpCE,EAAE,CAAC,uEAAuE,EAAE,MAAM;MACpEY,YAAY,CAAC;QACvBsB,oBAAoB,EAAE,OAAO;QAC7Bb,WAAW,EAAE,UAAU;QACvBc,iBAAiB,EAAE,WAAW;QAC9Bf,OAAO,EAAE,UAAU;QACnBgB,yBAAyB,EAAE,OAAO;QAClCC,UAAU,EAAE;UACV,OAAO,EAAE;YACPf,IAAI,EAAE,QAAQ;YACdD,WAAW,EAAE;UACf,CAAC;UACD,gBAAgB,EAAE;YAChBC,IAAI,EAAE;cACJA,IAAI,EAAE,SAAS;cACfmF,WAAW,EAAE,MAAM;cACnBC,qBAAqB,EAAE;YACzB,CAAC;YACDrF,WAAW,EAAE;UACf;QACF;MACF,CAAC,CAAC;MAEF,MAAMkB,QAAQ,GAAGzB,wBAAwB,CAAC,CAAC;MAC3C,MAAM6F,wBAAwB,GAAGpE,QAAQ,CAACE,SAAS,CAChDC,WAAW,CAAC,uBAAuB,CAAC,CAACkE,WAAW,CAAC,CAAC,CAAC,CAACC,YAAY,EAC/DF,wBAAyB;MAC7B5G,MAAM,CAAC4G,wBAAwB,CAACG,gBAAgB,CAAC,CAACjE,OAAO,CACvD,qBACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/C,QAAQ,CAAC,SAAS,EAAE,MAAM;IACxBE,EAAE,CAAC,wCAAwC,EAAE,MAAM;MAC3BE,YAAY,CAAC;QACjCkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,kBAAkB;UACxB0F,gBAAgB,EAAE;YAChBC,gBAAgB,EAAE,KAAK;YACvBC,mBAAmB,EAAE,QAAQ;YAC7BC,oBAAoB,EAAE,CAAC;UACzB;QACF,CAAC,CAAC;QACFC,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,SAAS;UACfgG,UAAU,EAAE;YAAEzD,QAAQ,EAAE,IAAI;YAAE0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAU;UAAE;QACnE,CAAC;MACH,CAAC,CAAC;MAEFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IACFrD,EAAE,CAAC,mEAAmE,EAAE,MAAM;MAC5E,MAAMwH,yBAAyB,GAAGxG,wBAAwB,CAAC;QACzDI,OAAO,EAAE,WAAW;QACpBE,IAAI,EAAE;UACJA,IAAI,EAAE,QAAQ;UACdqD,gBAAgB,EAAE;YAChB8C,cAAc,EAAE;UAClB;QACF;MACF,CAAC,CAAC;MACF,MAAMC,KAAK,GAAG1G,wBAAwB,CAAC;QACrCI,OAAO,EAAE,OAAO;QAChBE,IAAI,EAAE;MACR,CAAC,CAAC;MACF,MAAMqG,gBAAgB,GAAGlH,eAAe,CAAC;QACvCW,OAAO,EAAE,kBAAkB;QAC3BiB,UAAU,EAAE;UACVqF,KAAK;UACLhE,SAAS,EAAE,QAAQ;UACnBC,SAAS,EAAE6D;QACb;MACF,CAAC,CAAC;MAEF,MAAMI,iBAAiB,GAAGhH,YAAY,CAAC;QACrCsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,mBAAmB;QAChCc,iBAAiB,EAAE,oBAAoB;QACvCf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UACzB,WAAW,EAAE;YAAEA,IAAI,EAAE;UAAS,CAAC;UAC/B,WAAW,EAAE;YACXA,IAAI,EAAE;cACJA,IAAI,EAAE,QAAQ;cACdqD,gBAAgB,EAAE;gBAAE8C,cAAc,EAAE;cAAS;YAC/C;UACF;QACF,CAAC;QACDjC,oBAAoB,EAAE,CAAC;UACrBC,UAAU,EAAEkC,gBAAgB;UAC5BjC,eAAe,EAAE,CACf;YACEC,iBAAiB,EAAE,oBAAoB;YACvCC,MAAM,EAAE;UACV,CAAC,EACD;YACED,iBAAiB,EAAE,wBAAwB;YAC3CC,MAAM,EAAE;UACV,CAAC,EACD;YACED,iBAAiB,EAAE,wBAAwB;YAC3CC,MAAM,EAAE;UACV,CAAC;QAEL,CAAC;MACH,CAAC,CAAC;MAEiCzF,iCAAiC,CAClEwH,gBAAgB,EAChBC,iBACF,CAAC;MAEoBtH,iCAAiC,CACpDqH,gBAAgB,EAChBC,iBACF,CAAC;MAED7H,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,uCAAuC,EAAE,MAAM;MAC1BE,YAAY,CAAC;QACjCkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,yBAAyB;UAC/BuG,uBAAuB,EAAE;YACvBC,cAAc,EAAE,yBAAyB;YACzCC,cAAc,EAAE;cACd,KAAK,EAAE;gBACLzG,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf;YACF,CAAC;YACDC,iBAAiB,EAAE,CAAC;UACtB;QACF,CAAC,CAAC;QACFb,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,SAAS;UACfgG,UAAU,EAAE;YAAEzD,QAAQ,EAAE,IAAI;YAAE0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAU;UAAE;QACnE,CAAC;MACH,CAAC,CAAC;MAEFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,uDAAuD,EAAE,MAAM;MAC1CE,YAAY,CAAC;QACjCkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,kBAAkB;UACxB4G,gBAAgB,EAAE;YAChBJ,cAAc,EAAE,yBAAyB;YACzCC,cAAc,EAAE;cACd,KAAK,EAAE;gBACLzG,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf,CAAC;cACD,KAAK,EAAE;gBACL1G,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf;YACF,CAAC;YACDC,iBAAiB,EAAE,CAAC;UACtB;QACF,CAAC,CAAC;QACFb,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,QAAQ;UACdgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAO,CAAC;YAC/B6G,iBAAiB,EAAE;UACrB;QACF,CAAC,EAAE;UACDd,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,SAAS;UACfgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAU,CAAC;YAClC6G,iBAAiB,EAAE,UAAU;YAC7BC,oBAAoB,EAAE,CACpB;cACE9G,IAAI,EAAE,YAAY;cAClB+G,SAAS,EAAE;gBACT/G,IAAI,EAAE,KAAK;gBACXgH,UAAU,EAAE,CACV;kBACEhH,IAAI,EAAE,OAAO;kBACbiH,IAAI,EAAE;gBACR,CAAC,EACD;kBACEjH,IAAI,EAAE,WAAW;kBACjB0G,WAAW,EAAE,QAAQ;kBACrBQ,OAAO,EAAE;oBACPlH,IAAI,EAAE,aAAa;oBACnBmH,WAAW,EAAE;sBACXnH,IAAI,EAAE,QAAQ;sBACd8B,MAAM,EAAE;oBACV;kBACF;gBACF,CAAC;cAEL;YACF,CAAC;UAEL;QACF,CAAC,EAAE;UACDiE,EAAE,EAAE,yBAAyB;UAC7BhG,WAAW,EAAE,yBAAyB;UACtCC,IAAI,EAAE,qBAAqB;UAC3BgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE,qBAAqB;cAAEoH,cAAc,EAAE;YAAG,CAAC;YAClEP,iBAAiB,EAAE;UACrB;QACF,CAAC;MACH,CAAC,CAAC;MAEFpI,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,yDAAyD,EAAE,MAAM;MAClED,MAAM,CAAC,MACLG,YAAY,CAAC;QACXkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,kBAAkB;UACxB4G,gBAAgB,EAAE;YAChBJ,cAAc,EAAE,yBAAyB;YACzCC,cAAc,EAAE;cACd,KAAK,EAAE;gBACLzG,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf,CAAC;cACD,KAAK,EAAE;gBACL1G,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf;YACF,CAAC;YACDC,iBAAiB,EAAE,CAAC;UACtB;QACF,CAAC,CAAC;QACFb,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,SAAS;UACfgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAU,CAAC;YAClC6G,iBAAiB,EAAE,UAAU;YAC7BC,oBAAoB,EAAE,CACpB;cACE9G,IAAI,EAAE,YAAY;cAClB+G,SAAS,EAAE;gBACT/G,IAAI,EAAE,KAAK;gBACXgH,UAAU,EAAE,CACV;kBACEhH,IAAI,EAAE,OAAO;kBACbiH,IAAI,EAAE;gBACR,CAAC,EACD;kBACEjH,IAAI,EAAE,WAAW;kBACjB0G,WAAW,EAAE,QAAQ;kBACrBQ,OAAO,EAAE;oBACPlH,IAAI,EAAE,aAAa;oBACnBmH,WAAW,EAAE;sBACXnH,IAAI,EAAE,QAAQ;sBACd8B,MAAM,EAAE;oBACV;kBACF;gBACF,CAAC;cAEL;YACF,CAAC;UAEL;QACF,CAAC,EAAE;UACDiE,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,QAAQ;UACdgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAO,CAAC;YAC/B6G,iBAAiB,EAAE;UACrB;QACF,CAAC,EAAE;UACDd,EAAE,EAAE,yBAAyB;UAC7BhG,WAAW,EAAE,yBAAyB;UACtCC,IAAI,EAAE,qBAAqB;UAC3BgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cACbjG,IAAI,EAAE,qBAAqB;cAC3BoH,cAAc,EAAE;YAClB,CAAC;YACDP,iBAAiB,EAAE;UACrB;QACF,CAAC;MACH,CAAC,CACH,CAAC,CAACQ,YAAY,CACZ,uFACF,CAAC;MAED5I,MAAM,CAAC,MACLG,YAAY,CAAC;QACXkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,kBAAkB;UACxB4G,gBAAgB,EAAE;YAChBJ,cAAc,EAAE,yBAAyB;YACzCC,cAAc,EAAE;cACd,KAAK,EAAE;gBACLzG,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf,CAAC;cACD,KAAK,EAAE;gBACL1G,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf;YACF,CAAC;YACDC,iBAAiB,EAAE,CAAC;UACtB;QACF,CAAC,CAAC;QACFb,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,SAAS;UACfgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAU,CAAC;YAClC6G,iBAAiB,EAAE,UAAU;YAC7BC,oBAAoB,EAAE,CACpB;cACE9G,IAAI,EAAE,YAAY;cAClB+G,SAAS,EAAE;gBACT/G,IAAI,EAAE,KAAK;gBACXgH,UAAU,EAAE,CACV;kBACEhH,IAAI,EAAE,OAAO;kBACbiH,IAAI,EAAE;gBACR,CAAC,EACD;kBACEjH,IAAI,EAAE,WAAW;kBACjB0G,WAAW,EAAE,QAAQ;kBACrBQ,OAAO,EAAE;oBACPlH,IAAI,EAAE,aAAa;oBACnBmH,WAAW,EAAE;sBACXnH,IAAI,EAAE,QAAQ;sBACd8B,MAAM,EAAE;oBACV;kBACF;gBACF,CAAC;cAEL;YACF,CAAC;UAEL;QACF,CAAC,EAAE;UACDiE,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,QAAQ;UACdgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAO,CAAC;YAC/B6G,iBAAiB,EAAE;UACrB;QACF,CAAC,EAAE;UACDd,EAAE,EAAE,yBAAyB;UAC7BhG,WAAW,EAAE,yBAAyB;UACtCC,IAAI,EAAE,qBAAqB;UAC3BgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cACbjG,IAAI,EAAE,qBAAqB;cAC3BoH,cAAc,EAAE;YAClB,CAAC;YACDP,iBAAiB,EAAE;UACrB;QACF,CAAC;MACH,CAAC,CACH,CAAC,CAACQ,YAAY,CACZ,uEACF,CAAC;MAED5I,MAAM,CAAC,MACLG,YAAY,CAAC;QACXkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,kBAAkB;UACxB4G,gBAAgB,EAAE;YAChBJ,cAAc,EAAE,yBAAyB;YACzCC,cAAc,EAAE;cACd,KAAK,EAAE;gBACLzG,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf,CAAC;cACD,KAAK,EAAE;gBACL1G,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf;YACF,CAAC;YACDC,iBAAiB,EAAE,CAAC;UACtB;QACF,CAAC,CAAC;QACFb,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,SAAS;UACfgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAU,CAAC;YAClC6G,iBAAiB,EAAE,UAAU;YAC7BC,oBAAoB,EAAE,CACpB;cACE9G,IAAI,EAAE,YAAY;cAClB+G,SAAS,EAAE;gBACT/G,IAAI,EAAE,KAAK;gBACXgH,UAAU,EAAE,CACV;kBACEhH,IAAI,EAAE,OAAO;kBACbiH,IAAI,EAAE;gBACR,CAAC,EACD;kBACEjH,IAAI,EAAE,WAAW;kBACjB0G,WAAW,EAAE,cAAc;kBAC3BQ,OAAO,EAAE;oBACPlH,IAAI,EAAE,aAAa;oBACnBmH,WAAW,EAAE;sBACXnH,IAAI,EAAE,QAAQ;sBACd8B,MAAM,EAAE;oBACV;kBACF;gBACF,CAAC;cAEL;YACF,CAAC;UAEL;QACF,CAAC,EAAE;UACDiE,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,QAAQ;UACdgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAO,CAAC;YAC/B6G,iBAAiB,EAAE;UACrB;QACF,CAAC,EAAE;UACDd,EAAE,EAAE,yBAAyB;UAC7BhG,WAAW,EAAE,yBAAyB;UACtCC,IAAI,EAAE,qBAAqB;UAC3BgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cACbjG,IAAI,EAAE,qBAAqB;cAC3BoH,cAAc,EAAE;YAClB,CAAC;YACDP,iBAAiB,EAAE;UACrB;QACF,CAAC;MACH,CAAC,CACH,CAAC,CAACQ,YAAY,CACZ,+FACF,CAAC;IACH,CAAC,CAAC;IAEF3I,EAAE,CAAC,8CAA8C,EAAE,MAAM;MACvD,MAAM4H,iBAAiB,GAAGhH,YAAY,CAAC;QACrCsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,mBAAmB;QAChCc,iBAAiB,EAAE,oBAAoB;QACvCf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UACzB,YAAY,EAAE;YACZA,IAAI,EAAE;cACJA,IAAI,EAAE,QAAQ;cACdqD,gBAAgB,EAAE;gBAAE8C,cAAc,EAAE;cAAS;YAC/C;UACF;QACF;MACF,CAAC,CAAC;MAE6BrH,wBAAwB,CACrDwH,iBACF,CAAC;MAC8BrH,wBAAwB,CACrDqH,iBACF,CAAC;MAC8BvH,wBAAwB,CACrDuH,iBACF,CAAC;MAED7H,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,oDAAoD,EAAE,MAAM;MACxCY,YAAY,CAAC;QAChCQ,OAAO,EAAE,cAAc;QACvBC,WAAW,EAAE,aAAa;QAC1BO,WAAW,EAAE,2BAA2B;QACxCQ,yBAAyB,EAAE,IAAI;QAC/BD,iBAAiB,EAAE,OAAO;QAC1BD,oBAAoB,EAAE,MAAM;QAC5BG,UAAU,EAAE;UACV,MAAM,EAAE;YACNf,IAAI,EAAE,QAAQ;YACdM,WAAW,EAAE;UACf,CAAC;UACD,IAAI,EAAE;YAAEN,IAAI,EAAE,QAAQ;YAAEM,WAAW,EAAE;UAA4B;QACnE;MACF,CAAC,CAAC;MACF7B,MAAM,CAAC,MACLG,YAAY,CAAC;QACXkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,kBAAkB;UACxB4G,gBAAgB,EAAE;YAChBJ,cAAc,EAAE,cAAc;YAC9BC,cAAc,EAAE;cACd,MAAM,EAAE;gBACNzG,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf;YACF,CAAC;YACDC,iBAAiB,EAAE,CAAC;UACtB;QACF,CAAC,CAAC;QACFb,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,MAAM;UACVhG,WAAW,EAAE,MAAM;UACnBC,IAAI,EAAE,QAAQ;UACdgG,UAAU,EAAE;YAAEzD,QAAQ,EAAE,IAAI;YAAE0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAO;UAAE;QAChE,CAAC;MACH,CAAC,CACH,CAAC,CAACqH,YAAY,CACZ,4EACF,CAAC;IACH,CAAC,CAAC;IAEF3I,EAAE,CAAC,sEAAsE,EAAE,MAAM;MAC/E,MAAM2H,gBAAgB,GAAGlH,eAAe,CAAC;QACvCW,OAAO,EAAE,kBAAkB;QAC3BiB,UAAU,EAAE;UACVqB,SAAS,EAAE;QACb;MACF,CAAC,CAAC;MACmBvD,iCAAiC,CAACwH,gBAAgB,CAAC;MACnDrH,iCAAiC,CAACqH,gBAAgB,CAAC;MAExE5H,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,qDAAqD,EAAE,MAAM;MAC9D,MAAM4I,YAAY,GAAGhI,YAAY,CAAC;QAChCQ,OAAO,EAAE,cAAc;QACvBC,WAAW,EAAE,aAAa;QAC1BO,WAAW,EAAE,2BAA2B;QACxCQ,yBAAyB,EAAE,IAAI;QAC/BD,iBAAiB,EAAE,OAAO;QAC1BD,oBAAoB,EAAE,MAAM;QAC5BG,UAAU,EAAE;UACV,MAAM,EAAE;YACNf,IAAI,EAAE,QAAQ;YACdM,WAAW,EAAE;UACf,CAAC;UACD,IAAI,EAAE;YACJN,IAAI,EAAE,QAAQ;YACdD,WAAW,EAAE,IAAI;YACjBO,WAAW,EAAE;UACf;QACF;MACF,CAAC,CAAC;MACmBxB,wBAAwB,CAACwI,YAAY,EAAE;QAC1DP,SAAS,EAAE;UACT/G,IAAI,EAAE,OAAO;UACbiH,IAAI,EAAE;QACR;MACF,CAAC,CAAC;MAEFxI,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,sDAAsD,EAAE,MAAM;MAC/D,MAAM4I,YAAY,GAAGhI,YAAY,CAAC;QAChCQ,OAAO,EAAE,cAAc;QACvBC,WAAW,EAAE,aAAa;QAC1BO,WAAW,EAAE,2BAA2B;QACxCQ,yBAAyB,EAAE,IAAI;QAC/BD,iBAAiB,EAAE,OAAO;QAC1BD,oBAAoB,EAAE,MAAM;QAC5BG,UAAU,EAAE;UACV,MAAM,EAAE;YACNf,IAAI,EAAE,QAAQ;YACdM,WAAW,EAAE;UACf,CAAC;UACD,IAAI,EAAE;YACJN,IAAI,EAAE,QAAQ;YACdD,WAAW,EAAE,IAAI;YACjBO,WAAW,EAAE;UACf;QACF;MACF,CAAC,CAAC;MACmBxB,wBAAwB,CAACwI,YAAY,EAAE;QAC1DrF,eAAe,EAAE;UACfvB,cAAc,EACZ,qFAAqF;UACvF6G,WAAW,EAAE;QACf,CAAC;QACDR,SAAS,EAAE;UACT/G,IAAI,EAAE,YAAY;UAClBwH,UAAU,EAAE;YACVC,QAAQ,EAAE,YAAY;YACtBC,IAAI,EAAE;cACJ1H,IAAI,EAAE,cAAc;cACpB2H,YAAY,EAAE;gBACZC,MAAM,EAAE;kBACN5H,IAAI,EAAE,aAAa;kBACnB6H,WAAW,EAAE,CAAC;gBAChB,CAAC;gBACDC,aAAa,EAAE;kBACb9H,IAAI,EAAE,wBAAwB;kBAC9B+H,sBAAsB,EAAE,CAAC;gBAC3B;cACF;YACF,CAAC;YACDC,KAAK,EAAE;cACLhI,IAAI,EAAE,aAAa;cACnBmH,WAAW,EAAE;gBACXnH,IAAI,EAAE,YAAY;gBAClBiI,UAAU,EAAE;kBACVC,OAAO,EAAE,CACP,sCAAsC;gBAE1C;cACF;YACF;UACF;QACF;MACF,CAAC,CAAC;MAEFzJ,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,+DAA+D,EAAE,MAAM;MACxE,MAAMyJ,gBAAgB,GAAG7I,YAAY,CAAC;QACpCQ,OAAO,EAAE,kBAAkB;QAC3BC,WAAW,EAAE,oBAAoB;QACjCe,yBAAyB,EAAE,IAAI;QAC/BF,oBAAoB,EAAE,IAAI;QAC1BC,iBAAiB,EAAE,qBAAqB;QACxCE,UAAU,EAAE;UACV,IAAI,EAAE;YAAEf,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAK,CAAC;UAC3C,MAAM,EAAE;YAAEC,IAAI,EAAE,QAAQ;YAAEuE,KAAK,EAAE,IAAI;YAAExE,WAAW,EAAE;UAAO,CAAC;UAC5D,SAAS,EAAE;YAAEC,IAAI,EAAE,SAAS;YAAEuE,KAAK,EAAE,IAAI;YAAExE,WAAW,EAAE;UAAU,CAAC;UACnE,aAAa,EAAE;YAAEC,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAe;QAC/D;MACF,CAAC,CAAC;MAEmBjB,wBAAwB,CAACqJ,gBAAgB,CAAC;MAC1ClJ,wBAAwB,CAACkJ,gBAAgB,CAAC;MAE/D1J,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EACFvD,QAAQ,CAAC,SAAS,EAAE,MAAM;IACxBE,EAAE,CAAC,wBAAwB,EAAE,MAAM;MACjC,MAAMqH,EAAE,GAAG7G,wBAAwB,CAAC;QAClCY,OAAO,EAAE,IAAI;QACbsI,WAAW,EAAE,kCAAkC;QAC/CC,QAAQ,EAAE;MACZ,CAAC,CAAC;MACkBlJ,eAAe,CAAC;QAClCW,OAAO,EAAE,aAAa;QACtBiB,UAAU,EAAE;UACVgF;QACF;MACF,CAAC,CAAC;MACFtH,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IACFrD,EAAE,CAAC,wBAAwB,EAAE,MAAM;MACjC;MACA,MAAM8E,GAAuB,GAAG;QAC9B1D,OAAO,EAAE,uBAAuB;QAChCwI,oBAAoB,EAAE,KAAK;QAC3BtI,IAAI,EAAE,QAAQ;QACduI,MAAM,EAAE1I,sBAAsB,CAAC2I;MACjC,CAAC;MACD5I,oBAAoB,CAAC4D,GAAG,CAAC;MAELrE,eAAe,CAAC;QAClCW,OAAO,EAAE,aAAa;QACtBiB,UAAU,EAAE;UACVyC;QACF;MACF,CAAC,CAAC;MACF/E,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IACFrD,EAAE,CAAC,sCAAsC,EAAE,YAAY;MACrD,MAAM+J,YAAY,GAAGpK,IAAI,CAACqK,OAAO,CAACrK,IAAI,CAACsK,IAAI,CACzCC,SAAS,EACT,IAAI,EACJ,kBAAkB,EAClB,sCACF,CAAC,CAAC;MACF,MAAMrJ,cAAc,CAAC,iBAAiB,EAAE,MAAM;QAC5C,MAAM6G,KAAK,GAAG1G,wBAAwB,CAAC;UACrCI,OAAO,EAAE,OAAO;UAChBE,IAAI,EAAE;QACR,CAAC,CAAC;QACF,MAAM6I,WAAW,GAAG1J,eAAe,CAAC;UAClCW,OAAO,EAAE,aAAa;UACtBiB,UAAU,EAAE;YACVqF;UACF;QACF,CAAC,CAAC;QACe9G,YAAY,CAAC;UAC5BsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,WAAW;UACxBc,iBAAiB,EAAE,WAAW;UAC9Bf,OAAO,EAAE,UAAU;UACnBgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE,CAAC;UACzCkE,oBAAoB,EAAE,CAAC;YACrBC,UAAU,EAAE0E,WAAW;YACvBzE,eAAe,EAAE,CAAC;cAChBC,iBAAiB,EAAE,sBAAsB;cACzCC,MAAM,EAAE;YACV,CAAC;UACH,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,EAAEmE,YAAY,CAAC;MAEhBhK,MAAM,CACJL,EAAE,CAAC0K,YAAY,CACbzK,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,wCAAwC,CAAC,EACjE,MACF,CACF,CAAC,CAAC1G,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;MAEFtD,MAAM,CACJL,EAAE,CAAC0K,YAAY,CACbzK,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,kCAAkC,CAAC,EAC3D,MACF,CACF,CAAC,CAAC1G,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;MAEFtD,MAAM,CACJL,EAAE,CAAC0K,YAAY,CACbzK,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,wCAAwC,CAAC,EACjE,MACF,CACF,CAAC,CAAC1G,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;MACF3D,EAAE,CAAC2K,MAAM,CAAC1K,IAAI,CAACqK,OAAO,CAACrK,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE;QACrDO,SAAS,EAAE,IAAI;QACfC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;IACFvK,EAAE,CAAC,0DAA0D,EAAE,YAAY;MACzE,MAAM+J,YAAY,GAAGpK,IAAI,CAACqK,OAAO,CAACrK,IAAI,CAACsK,IAAI,CACzCC,SAAS,EACT,IAAI,EACJ,kBAAkB,EAClB,0DACF,CAAC,CAAC;MACF,MAAMrJ,cAAc,CAAC,eAAe,EAAE,MAAM;QAC1C,MAAM4C,eAAe,GAAGhD,eAAe,CAAC;UACtCW,OAAO,EAAE,iBAAiB;UAC1BiB,UAAU,EAAE;YACVqB,SAAS,EAAE;UACb;QACF,CAAC,CAAC;QACqBjD,eAAe,CAAC;UACrCW,OAAO,EAAE,gBAAgB;UACzBiB,UAAU,EAAE;YACVsB,SAAS,EAAE;UACb,CAAC;UACDC,OAAO,EAAE,CAACH,eAAe;QAC3B,CAAC,CAAC;MACJ,CAAC,EAAEsG,YAAY,CAAC;MAEhBhK,MAAM,CACJL,EAAE,CAAC0K,YAAY,CACbzK,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,2CAA2C,CAAC,EACpE,MACF,CACF,CAAC,CAAC1G,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;MACF3D,EAAE,CAAC2K,MAAM,CAAC1K,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,IAAI,CAAC,EAAE;QACvCO,SAAS,EAAE,IAAI;QACfC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;IACFvK,EAAE,CAAC,2EAA2E,EAAE,MAAM;MACpF,MAAMyD,eAAe,GAAGhD,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1BiB,UAAU,EAAE;UACVmI,UAAU,EAAE;QACd;MACF,CAAC,CAAC;MACF,MAAMC,cAAc,GAAGhK,eAAe,CAAC;QACrCW,OAAO,EAAE,gBAAgB;QACzBiB,UAAU,EAAE;UACVqI,UAAU,EAAE;QACd,CAAC;QACD9G,OAAO,EAAE,CAACH,eAAe;MAC3B,CAAC,CAAC;MACgB7C,YAAY,CAAC;QAC7BQ,OAAO,EAAE,WAAW;QACpBgB,yBAAyB,EAAE,WAAW;QACtCF,oBAAoB,EAAE,WAAW;QACjCb,WAAW,EAAE,WAAW;QACxBc,iBAAiB,EAAE,YAAY;QAC/BE,UAAU,EAAE;UACV,WAAW,EAAE;YAAEf,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAY,CAAC;UACzD,WAAW,EAAE;YAAEC,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAY;QAC1D,CAAC;QACDmE,oBAAoB,EAAE,CACpB;UACEC,UAAU,EAAEgF,cAAc;UAC1B/E,eAAe,EAAE,CACf;YACEC,iBAAiB,EAAE,yBAAyB;YAC5CC,MAAM,EAAE;UACV,CAAC,EACD;YACED,iBAAiB,EAAE,yBAAyB;YAC5CC,MAAM,EAAE;UACV,CAAC;QAEL,CAAC;MAEL,CAAC,CAAC;MAEF7F,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EACFvD,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC7BE,EAAE,CAAC,6BAA6B,EAAE,YAAY;MAC5C,MAAM+J,YAAY,GAAGpK,IAAI,CAACqK,OAAO,CAACrK,IAAI,CAACsK,IAAI,CACzCC,SAAS,EACT,IAAI,EACJ,kBAAkB,EAClB,6BACF,CAAC,CAAC;MACF,MAAMrJ,cAAc,CAClB,eAAe,EACf,MAAM;QACJZ,aAAa,CAAC,cAAc,EAAEL,aAAa,CAAC+K,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;QAC7DpK,eAAe,CAAC;UACdW,OAAO,EAAE,aAAa;UACtBiB,UAAU,EAAE;YACVqB,SAAS,EAAE;UACb;QACF,CAAC,CAAC;MACJ,CAAC,EACDqG,YAAY,EACZpK,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,mBAAmB,CAC7C,CAAC;MAED,MAAMe,WAAW,GAAGC,IAAI,CAACC,KAAK,CAC5BtL,EAAE,CAAC0K,YAAY,CACbzK,IAAI,CAACsK,IAAI,CAACC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAChD,MACF,CACF,CAAC;MACDnK,MAAM,CAAC+K,WAAW,CAACrJ,OAAO,CAAC,CAACsB,WAAW,CAAC,CAAC;MAEzChD,MAAM,CACJL,EAAE,CAAC0K,YAAY,CAACzK,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,mBAAmB,CAAC,EAAE,MAAM,CACtE,CAAC,CAAC1G,qBAAqB,CAAC;AAC9B;AACA,6BAA6ByH,WAAW,CAACrJ,OAAO;AAChD;AACA,OAAO,CAAC;MAEF1B,MAAM,CACJL,EAAE,CAAC0K,YAAY,CAACzK,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,CAC7D,CAAC,CACEkB,SAAS,CACR,mEACF,CAAC;MAEHvL,EAAE,CAAC2K,MAAM,CAAC1K,IAAI,CAACsK,IAAI,CAACF,YAAY,EAAE,IAAI,CAAC,EAAE;QACvCO,SAAS,EAAE,IAAI;QACfC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"overall.test.js","names":["fs","path","fileURLToPath","beforeEach","describe","expect","it","addDependency","defineAction","defineCreateInterfaceObjectAction","defineCreateObjectAction","defineDeleteObjectAction","defineModifyInterfaceObjectAction","defineModifyObjectAction","importSharedPropertyType","defineInterface","defineInterfaceLinkConstraint","defineLink","defineObject","defineOntology","dumpOntologyFullMetadata","dumpValueTypeWireType","defineSharedPropertyType","defineValueType","importOntologyEntity","OntologyEntityTypeEnum","apiName","displayName","type","constraints","constraint","version","toThrowErrorMatchingInlineSnapshot","testStringValueType","description","length","minSize","maxSize","failureMessage","message","titlePropertyApiName","pluralDisplayName","primaryKeyPropertyApiName","properties","valueType","ontology","objectPropertyType","blockData","objectTypes","objectType","propertyTypes","toEqual","dataConstraints","toBeDefined","propertyTypeConstraints","toHaveLength","constraintWrapper","toBe","string","toMatchInlineSnapshot","result","displayMetadata","foo","parentInterface","property1","property2","extends","required","propertyDefinition","searchable","a","b","not","toBeUndefined","from","toOne","toMany","fooSpt","icon","color","locator","structDefinition","fieldType","undefined","spt","isLongText","supportsEfficientLeadingWildcard","supportsExactMatching","status","active","experimental","deadline","deprecated","sample","implementsInterfaces","implements","propertyMapping","interfaceProperty","mapsTo","array","lat","lng","object","otherObject","one","metadata","manyForeignKeyProperty","many","datasource","retentionPeriod","editOnly","markingType","markingInputGroupName","classificationConstraint","datasources","dataSecurity","markingGroupName","rules","addInterfaceRule","interfaceApiName","objectTypeParameter","sharedPropertyValues","parameters","id","validation","allowedValues","exampleStructPropertyType","simpleProperty","mySpt","exampleInterface","exampleObjectType","addOrModifyObjectRuleV2","objectToModify","propertyValues","parameterId","structFieldValues","modifyObjectRule","defaultVisibility","conditionalOverrides","condition","name","interfaceTypes","actionLevelValidation","parameterLevelValidations","conditions","matches","staticValue","excludedProperties","toThrowError","sampleObject","typeClasses","comparison","operator","left","userProperty","userId","currentUser","propertyValue","organizationMarkingIds","right","stringList","strings","objectWithArrays","packageName","typeHint","nonNameSpacedApiName","__type","SHARED_PROPERTY_TYPE","generatedDir","resolve","join","__dirname","myInterface","readFileSync","rmSync","recursive","force","iProperty1","childInterface","iProperty2","import","meta","url","packageJson","JSON","parse","toContain"],"sources":["overall.test.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { beforeEach, describe, expect, it } from \"vitest\";\nimport { addDependency } from \"./addDependency.js\";\nimport {\n defineAction,\n defineCreateInterfaceObjectAction,\n defineCreateObjectAction,\n defineDeleteObjectAction,\n defineModifyInterfaceObjectAction,\n defineModifyObjectAction,\n} from \"./defineAction.js\";\nimport { importSharedPropertyType } from \"./defineImportSpt.js\";\nimport { defineInterface } from \"./defineInterface.js\";\nimport { defineInterfaceLinkConstraint } from \"./defineInterfaceLinkConstraint.js\";\nimport { defineLink } from \"./defineLink.js\";\nimport { defineObject } from \"./defineObject.js\";\nimport {\n defineOntology,\n dumpOntologyFullMetadata,\n dumpValueTypeWireType,\n} from \"./defineOntology.js\";\nimport { defineSharedPropertyType } from \"./defineSpt.js\";\nimport { defineValueType } from \"./defineValueType.js\";\nimport { importOntologyEntity } from \"./importOntologyEntity.js\";\nimport {\n type InterfaceType,\n OntologyEntityTypeEnum,\n type SharedPropertyType,\n} from \"./types.js\";\n\ndescribe(\"Ontology Defining\", () => {\n beforeEach(async () => {\n await defineOntology(\"com.palantir.\", () => {}, \"/tmp/\");\n });\n\n describe(\"ValueTypes\", () => {\n it(\"Fails to define value type with incorrect semver\", () => {\n expect(() =>\n defineValueType({\n apiName: \"apiName\",\n displayName: \"displayName\",\n type: {\n \"type\": \"boolean\",\n constraints: [{ constraint: { \"allowedValues\": [\"TRUE_VALUE\"] } }],\n },\n version: \"not a version\",\n })\n ).toThrowErrorMatchingInlineSnapshot(\n \"[Error: Invariant failed: Version is not a valid semver]\",\n );\n });\n\n it(\"Tests convertProperty function with valueType constraints for string\", () => {\n const testStringValueType = defineValueType({\n apiName: \"stringWithConstraints\",\n displayName: \"String With Constraints\",\n description: \"A string type with additional constraints\",\n type: {\n \"type\": \"string\",\n constraints: [\n {\n constraint: {\n type: \"length\",\n length: {\n minSize: 5,\n maxSize: 20,\n },\n },\n failureMessage: {\n message: \"String must be between 5 and 20 characters\",\n },\n },\n ],\n },\n version: \"1.0.0\",\n });\n\n const object = defineObject({\n titlePropertyApiName: \"constrainedString\",\n displayName: \"Test Object\",\n pluralDisplayName: \"Test Objects\",\n apiName: \"testObject\",\n primaryKeyPropertyApiName: \"constrainedString\",\n properties: {\n \"constrainedString\": {\n type: \"string\",\n displayName: \"Constrained String\",\n valueType: testStringValueType,\n },\n },\n });\n\n const ontology = dumpOntologyFullMetadata();\n const objectPropertyType =\n ontology.blockData.objectTypes[\"com.palantir.testObject\"]\n .objectType.propertyTypes[\"constrainedString\"];\n\n expect(objectPropertyType.valueType).toEqual({\n apiName: \"stringWithConstraints\",\n version: \"1.0.0\",\n });\n\n expect(objectPropertyType.dataConstraints).toBeDefined();\n expect(objectPropertyType.dataConstraints?.propertyTypeConstraints)\n .toHaveLength(1);\n\n const constraintWrapper = objectPropertyType.dataConstraints\n ?.propertyTypeConstraints[0];\n expect(constraintWrapper?.constraints?.type).toBe(\"string\");\n expect(\n (constraintWrapper?.constraints as {\n type: \"string\";\n string: { length: { minSize: number; maxSize: number } };\n }).string.length.minSize,\n ).toBe(5);\n expect(\n (constraintWrapper?.constraints as {\n type: \"string\";\n string: { length: { minSize: number; maxSize: number } };\n }).string.length.maxSize,\n ).toBe(20);\n expect(constraintWrapper?.failureMessage?.message).toBe(\n \"String must be between 5 and 20 characters\",\n );\n });\n\n it(\"Correctly serializes a value type\", () => {\n defineValueType({\n apiName: \"apiName\",\n displayName: \"displayName\",\n type: {\n \"type\": \"boolean\",\n constraints: [{ constraint: { \"allowedValues\": [\"TRUE_VALUE\"] } }],\n },\n version: \"0.1.0\",\n });\n expect(dumpValueTypeWireType()).toMatchInlineSnapshot(`\n {\n \"valueTypes\": [\n {\n \"metadata\": {\n \"apiName\": \"apiName\",\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"displayName\",\n },\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n \"versions\": [\n {\n \"baseType\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"constraints\": [\n {\n \"constraint\": {\n \"constraint\": {\n \"boolean\": {\n \"allowedValues\": [\n \"TRUE_VALUE\",\n ],\n },\n \"type\": \"boolean\",\n },\n \"failureMessage\": undefined,\n },\n },\n ],\n \"exampleValues\": [],\n \"version\": \"0.1.0\",\n },\n ],\n },\n ],\n }\n `);\n });\n\n // N.B Not sure what this is for but I don't want to break anything so I added the eslint ignore\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n defineOntology(\"com.palantir.\", () => {}, \"/tmp/\");\n });\n\n describe(\"Interfaces\", () => {\n it(\"doesn't let you define the same interface twice\", () => {\n defineInterface({ apiName: \"Foo\" });\n expect(() => {\n defineInterface({ apiName: \"Foo\" });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Interface com.palantir.Foo already exists]`,\n );\n });\n\n it(\"defaults displayName to apiName\", () => {\n const result = defineInterface({ apiName: \"Foo\" });\n expect(result.displayMetadata.displayName).toBe(\"Foo\");\n });\n\n it(\"defaults description to displayName\", () => {\n const result = defineInterface({ apiName: \"Foo\", displayName: \"d\" });\n expect(result.displayMetadata.description).toBe(\"d\");\n });\n\n it(\"defaults description to displayName to apiName\", () => {\n const result = defineInterface({ apiName: \"Foo\" });\n expect(result.displayMetadata.description).toBe(\"Foo\");\n });\n\n describe(\"auto spts\", () => {\n it(\"auto creates spts\", () => {\n defineInterface({\n apiName: \"Foo\",\n properties: {\n foo: \"string\",\n },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.Foo\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.Foo\",\n \"displayMetadata\": {\n \"description\": \"Foo\",\n \"displayName\": \"Foo\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.foo\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.foo\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"does not let you conflict spts\", () => {\n defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.foo\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n\n expect(() => {\n defineInterface({\n apiName: \"Foo\",\n properties: {\n foo: \"string\",\n },\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Shared property type com.palantir.foo already exists]`,\n );\n });\n });\n\n it(\"allows extends interfaces with InterfaceType provided\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n property1: \"string\",\n },\n });\n const childInterface = defineInterface({\n apiName: \"childInterface\",\n properties: {\n property2: \"string\",\n },\n extends: [parentInterface],\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.childInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.childInterface\",\n \"displayMetadata\": {\n \"description\": \"childInterface\",\n \"displayName\": \"childInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [\n \"com.palantir.parentInterface\",\n ],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property2\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"supports optional properties\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n property1: { required: false, propertyDefinition: \"string\" },\n },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": false,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"allows extends interfaces with apiName provided\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n property1: \"string\",\n },\n });\n const childInterface = defineInterface({\n apiName: \"childInterface\",\n properties: {\n property2: \"string\",\n },\n extends: parentInterface,\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.childInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.childInterface\",\n \"displayMetadata\": {\n \"description\": \"childInterface\",\n \"displayName\": \"childInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [\n \"com.palantir.parentInterface\",\n ],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property2\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"supports specifying searchable\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n searchable: false,\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n });\n\n describe(\"ILTs\", () => {\n let a: InterfaceType;\n let b: InterfaceType;\n\n beforeEach(() => {\n a = defineInterface({ apiName: \"A\" });\n b = defineInterface({ apiName: \"B\" });\n });\n\n it(\"single link works\", () => {\n expect(a).not.toBeUndefined();\n defineInterfaceLinkConstraint({\n from: a,\n toOne: b,\n apiName: \"singleLink\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.A\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.A\",\n \"displayMetadata\": {\n \"description\": \"A\",\n \"displayName\": \"A\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [\n {\n \"cardinality\": \"SINGLE\",\n \"linkedEntityTypeId\": {\n \"interfaceType\": \"com.palantir.B\",\n \"type\": \"interfaceType\",\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.singleLink\",\n \"description\": \"singleLink\",\n \"displayName\": \"singleLink\",\n },\n \"required\": true,\n },\n ],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.B\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.B\",\n \"displayMetadata\": {\n \"description\": \"B\",\n \"displayName\": \"B\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"many link works\", () => {\n defineInterfaceLinkConstraint({\n from: a,\n toMany: b,\n apiName: \"manyLink\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.A\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.A\",\n \"displayMetadata\": {\n \"description\": \"A\",\n \"displayName\": \"A\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [\n {\n \"cardinality\": \"MANY\",\n \"linkedEntityTypeId\": {\n \"interfaceType\": \"com.palantir.B\",\n \"type\": \"interfaceType\",\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.manyLink\",\n \"description\": \"manyLink\",\n \"displayName\": \"manyLink\",\n },\n \"required\": true,\n },\n ],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.B\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.B\",\n \"displayMetadata\": {\n \"description\": \"B\",\n \"displayName\": \"B\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {},\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n });\n\n describe(\"SPTs\", () => {\n it(\"doesn't let you create the same spt twice\", () => {\n defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n\n expect(() => {\n defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Shared property type com.palantir.foo already exists]`,\n );\n });\n });\n\n it(\"uses a predefined spt\", () => {\n const fooSpt = defineSharedPropertyType({\n apiName: \"fooSpt\",\n type: \"string\",\n });\n\n const FooInterface = defineInterface({\n apiName: \"FooInterface\",\n displayName: \"Foo Interface\",\n properties: {\n fooSpt,\n },\n icon: { color: \"#00000\", locator: \"airplane\" },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.FooInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.FooInterface\",\n \"displayMetadata\": {\n \"description\": \"Foo Interface\",\n \"displayName\": \"Foo Interface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#00000\",\n \"locator\": \"airplane\",\n },\n \"type\": \"blueprint\",\n },\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.fooSpt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.fooSpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"fooSpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.fooSpt\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.fooSpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"fooSpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"properly serializes both types of struct SPTs\", () => {\n const fooSpt = defineSharedPropertyType({\n apiName: \"fooSpt\",\n type: {\n type: \"struct\",\n structDefinition: {\n \"simpleProperty\": \"boolean\",\n \"complexProperty\": {\n fieldType: \"date\",\n displayMetadata: {\n displayName: \"complex property\",\n description: undefined,\n },\n },\n },\n },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.fooSpt\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.fooSpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"fooSpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"typeClasses\": [],\n },\n {\n \"aliases\": [],\n \"apiName\": \"complexProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"complex property\",\n },\n \"fieldType\": {\n \"date\": {},\n \"type\": \"date\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"Custom string fields properly set\", () => {\n const spt = defineSharedPropertyType({\n apiName: \"foo\",\n type: {\n type: \"string\",\n isLongText: true,\n supportsEfficientLeadingWildcard: true,\n supportsExactMatching: false,\n },\n });\n\n defineInterface({\n apiName: \"interface\",\n properties: { foo: spt },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.interface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.interface\",\n \"displayMetadata\": {\n \"description\": \"interface\",\n \"displayName\": \"interface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.foo\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": true,\n \"supportsEfficientLeadingWildcard\": true,\n \"supportsExactMatching\": false,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.foo\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": true,\n \"supportsEfficientLeadingWildcard\": true,\n \"supportsExactMatching\": false,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n\n it(\"defaults interface status to active\", () => {\n const result = defineInterface({ apiName: \"Foo\" });\n expect(result.status).toEqual({ type: \"active\", active: {} });\n });\n\n it(\"sets interface status as experimental from opts\", () => {\n const experimentalStatus = {\n type: \"experimental\",\n experimental: {},\n };\n const result = defineInterface({\n apiName: \"Foo\",\n status: { type: \"experimental\" },\n });\n expect(result.status).toEqual(experimentalStatus);\n });\n\n it(\"sets interface status as deprecated from opts\", () => {\n const deprecatedStatus = {\n type: \"deprecated\",\n deprecated: {\n message: \"foo\",\n deadline: \"foo\",\n },\n };\n const result = defineInterface({\n apiName: \"Foo\",\n status: { type: \"deprecated\", message: \"foo\", deadline: \"foo\" },\n });\n expect(result.status).toEqual(deprecatedStatus);\n });\n\n describe(\"Objects\", () => {\n it(\"Fails if any property reference does not exist\", () => {\n const spt = defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n\n const sample = defineInterface({\n apiName: \"interface\",\n properties: { foo: spt },\n });\n\n expect(() => {\n defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Title property fizz is not defined on object foo]`,\n );\n\n expect(() => {\n defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"bar\": { type: \"string\" } },\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Primary key property fizz does not exist on object foo]`,\n );\n\n expect(() => {\n defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n implementsInterfaces: [{\n implements: sample,\n propertyMapping: [{\n interfaceProperty: \"com.palantir.foo\",\n mapsTo: \"fizz\",\n }],\n }],\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: \\nOntology Definition Error: Object property mapped to interface does not exist. Object Property Mapped: fizz\\n]`,\n );\n\n expect(() => {\n defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n implementsInterfaces: [{\n implements: sample,\n propertyMapping: [{\n interfaceProperty: \"com.palantir.fizz\",\n mapsTo: \"bar\",\n }, {\n interfaceProperty: \"com.palantir.foo\",\n mapsTo: \"bar\",\n }],\n }],\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: \\nOntology Definition Error: Interface property com.palantir.fizz referenced in foo object does not exist\\n]`,\n );\n });\n\n it(\"Objects properly defined\", () => {\n const spt = defineSharedPropertyType({\n apiName: \"foo\",\n type: \"string\",\n });\n\n const sample = defineInterface({\n apiName: \"interface\",\n properties: { foo: spt },\n });\n\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"bar\": { type: \"string\", displayName: \"Bar\" },\n \"arrayProp\": {\n type: \"string\",\n array: true,\n displayName: \"Array Property Test\",\n },\n \"geopoint\": {\n type: {\n type: \"struct\",\n structDefinition: { lat: \"double\", lng: \"double\" },\n },\n displayName: \"geopoint\",\n },\n },\n implementsInterfaces: [{\n implements: sample,\n propertyMapping: [{\n interfaceProperty: \"foo\",\n mapsTo: \"bar\",\n }],\n }],\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.interface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.interface\",\n \"displayMetadata\": {\n \"description\": \"interface\",\n \"displayName\": \"interface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.foo\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"arrayProp\": {\n \"column\": \"arrayProp\",\n \"type\": \"column\",\n },\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"geopoint\": {\n \"struct\": {\n \"column\": \"geopoint\",\n \"mapping\": {\n \"lat\": {\n \"apiName\": \"lat\",\n \"mappings\": {},\n },\n \"lng\": {\n \"apiName\": \"lng\",\n \"mappings\": {},\n },\n },\n },\n \"type\": \"struct\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [\n {\n \"interfaceTypeApiName\": \"com.palantir.interface\",\n \"linksV2\": {},\n \"properties\": {\n \"com.palantir.foo\": {\n \"propertyTypeRid\": \"bar\",\n },\n },\n \"propertiesV2\": {},\n },\n ],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"arrayProp\": {\n \"apiName\": \"arrayProp\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Array Property Test\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"array\": {\n \"subtype\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n },\n \"type\": \"array\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"geopoint\": {\n \"apiName\": \"geopoint\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"geopoint\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"lat\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"lat\",\n },\n \"fieldType\": {\n \"double\": {},\n \"type\": \"double\",\n },\n \"typeClasses\": [],\n },\n {\n \"aliases\": [],\n \"apiName\": \"lng\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"lng\",\n },\n \"fieldType\": {\n \"double\": {},\n \"type\": \"double\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {\n \"com.palantir.foo\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.foo\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"foo\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n }\n `);\n });\n it(\"One To Many Links are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n });\n\n const otherObject = defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizz\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"fizz\": { type: \"string\" }, \"bar\": { type: \"string\" } },\n });\n\n defineLink({\n apiName: \"fizzToFoo\",\n one: {\n object: object,\n metadata: {\n apiName: \"fizzes\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foos\",\n },\n },\n toMany: {\n object: otherObject,\n metadata: {\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizzes\",\n apiName: \"foos\",\n },\n },\n manyForeignKeyProperty: \"bar\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {\n \"fizzToFoo\": {\n \"datasources\": [],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"linkType\": {\n \"definition\": {\n \"oneToMany\": {\n \"cardinalityHint\": \"ONE_TO_MANY\",\n \"manyToOneLinkMetadata\": {\n \"apiName\": \"foos\",\n \"displayMetadata\": {\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Fizzes\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n \"objectTypeRidManySide\": \"com.palantir.fizz\",\n \"objectTypeRidOneSide\": \"com.palantir.foo\",\n \"oneSidePrimaryKeyToManySidePropertyMapping\": [\n {\n \"from\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n \"to\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.fizz\",\n },\n },\n ],\n \"oneToManyLinkMetadata\": {\n \"apiName\": \"fizzes\",\n \"displayMetadata\": {\n \"displayName\": \"Foo\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Foos\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n },\n \"type\": \"oneToMany\",\n },\n \"id\": \"fizz-to-foo\",\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"objectTypes\": {\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.fizz\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"fizz\": {\n \"column\": \"fizz\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"fizz\",\n },\n },\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"Many To Many Links are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n });\n\n const otherObject = defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizz\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"fizz\": { type: \"string\" }, \"bar\": { type: \"string\" } },\n });\n\n defineLink({\n apiName: \"fizzToFoo\",\n many: {\n object: object,\n metadata: {\n displayName: \"Foo\",\n pluralDisplayName: \"Foos\",\n apiName: \"fizzes\",\n },\n },\n toMany: {\n object: otherObject,\n metadata: {\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizzes\",\n apiName: \"foos\",\n },\n },\n });\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {\n \"fizzToFoo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"dataset\": {\n \"datasetRid\": \"link-fizzToFoo\",\n \"objectTypeAPrimaryKeyMapping\": [\n {\n \"column\": \"bar\",\n \"property\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n },\n ],\n \"objectTypeBPrimaryKeyMapping\": [\n {\n \"column\": \"bar\",\n \"property\": {\n \"apiName\": \"fizz\",\n \"object\": \"com.palantir.fizz\",\n },\n },\n ],\n \"writebackDatasetRid\": undefined,\n },\n \"type\": \"dataset\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": undefined,\n \"rid\": \"ri.ontology.main.datasource.link-fizzToFoo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"linkType\": {\n \"definition\": {\n \"manyToMany\": {\n \"objectTypeAPrimaryKeyPropertyMapping\": [\n {\n \"from\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n \"to\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n },\n ],\n \"objectTypeAToBLinkMetadata\": {\n \"apiName\": \"fizzes\",\n \"displayMetadata\": {\n \"displayName\": \"Foo\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Foos\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n \"objectTypeBPrimaryKeyPropertyMapping\": [\n {\n \"from\": {\n \"apiName\": \"fizz\",\n \"object\": \"com.palantir.fizz\",\n },\n \"to\": {\n \"apiName\": \"fizz\",\n \"object\": \"com.palantir.fizz\",\n },\n },\n ],\n \"objectTypeBToALinkMetadata\": {\n \"apiName\": \"foos\",\n \"displayMetadata\": {\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Fizzes\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n \"objectTypeRidA\": \"com.palantir.foo\",\n \"objectTypeRidB\": \"com.palantir.fizz\",\n \"peeringMetadata\": undefined,\n },\n \"type\": \"manyToMany\",\n },\n \"id\": \"fizz-to-foo\",\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"objectTypes\": {\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.fizz\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"fizz\": {\n \"column\": \"fizz\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"fizz\",\n },\n },\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"Minimal link definitions are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n });\n\n const otherObject = defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"Fizz\",\n pluralDisplayName: \"Fizz\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"fizz\": { type: \"string\" }, \"bar\": { type: \"string\" } },\n });\n\n defineLink({\n apiName: \"fizzToFoo\",\n one: {\n object: object,\n metadata: {\n apiName: \"fizzes\",\n },\n },\n toMany: {\n object: otherObject,\n metadata: {\n apiName: \"foos\",\n },\n },\n manyForeignKeyProperty: \"bar\",\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {\n \"fizzToFoo\": {\n \"datasources\": [],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"linkType\": {\n \"definition\": {\n \"oneToMany\": {\n \"cardinalityHint\": \"ONE_TO_MANY\",\n \"manyToOneLinkMetadata\": {\n \"apiName\": \"foos\",\n \"displayMetadata\": {\n \"displayName\": \"Foos\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Foos\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n \"objectTypeRidManySide\": \"com.palantir.fizz\",\n \"objectTypeRidOneSide\": \"com.palantir.foo\",\n \"oneSidePrimaryKeyToManySidePropertyMapping\": [\n {\n \"from\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.foo\",\n },\n \"to\": {\n \"apiName\": \"bar\",\n \"object\": \"com.palantir.fizz\",\n },\n },\n ],\n \"oneToManyLinkMetadata\": {\n \"apiName\": \"fizzes\",\n \"displayMetadata\": {\n \"displayName\": \"Fizzes\",\n \"groupDisplayName\": \"\",\n \"pluralDisplayName\": \"Fizzes\",\n \"visibility\": \"NORMAL\",\n },\n \"typeClasses\": [],\n },\n },\n \"type\": \"oneToMany\",\n },\n \"id\": \"fizz-to-foo\",\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"objectTypes\": {\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.fizz\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"fizz\": {\n \"column\": \"fizz\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"fizz\",\n },\n },\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"Explicit datasource definitions are properly defined\", () => {\n const datasetBackedObject = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"datasetBackedObject\",\n pluralDisplayName: \"datasetBackedObject\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n datasource: { type: \"dataset\" },\n });\n\n const streamBackedObjectNoRetention = defineObject({\n titlePropertyApiName: \"fizz\",\n displayName: \"streamBackedObjectNoRetention\",\n pluralDisplayName: \"streamBackedObjectNoRetention\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: { \"fizz\": { type: \"string\" }, \"bar\": { type: \"string\" } },\n datasource: { type: \"stream\" },\n });\n\n const streamBackedObjectWithRetention = defineObject({\n titlePropertyApiName: \"buzz\",\n displayName: \"streamBackedObjectWithRetention\",\n pluralDisplayName: \"streamBackedObjectWithRetention\",\n apiName: \"buzz\",\n primaryKeyPropertyApiName: \"buzz\",\n properties: { \"buzz\": { type: \"string\" } },\n datasource: { type: \"stream\", retentionPeriod: \"PT1H\" },\n });\n\n expect(dumpOntologyFullMetadata().blockData).toMatchInlineSnapshot(`\n {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.buzz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"streamV2\": {\n \"propertyMapping\": {\n \"buzz\": \"buzz\",\n },\n \"propertySecurityGroups\": undefined,\n \"retentionPolicy\": {\n \"time\": {\n \"window\": \"PT1H\",\n },\n \"type\": \"time\",\n },\n \"streamLocator\": \"com.palantir.buzz\",\n },\n \"type\": \"streamV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.buzz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.buzz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"streamBackedObjectWithRetention\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"streamBackedObjectWithRetention\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"buzz\",\n ],\n \"propertyTypes\": {\n \"buzz\": {\n \"apiName\": \"buzz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Buzz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"buzz\",\n },\n },\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"streamV2\": {\n \"propertyMapping\": {\n \"bar\": \"bar\",\n \"fizz\": \"fizz\",\n },\n \"propertySecurityGroups\": undefined,\n \"retentionPolicy\": {\n \"none\": {},\n \"type\": \"none\",\n },\n \"streamLocator\": \"com.palantir.fizz\",\n },\n \"type\": \"streamV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"streamBackedObjectNoRetention\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"streamBackedObjectNoRetention\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"fizz\",\n },\n },\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"datasetBackedObject\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"datasetBackedObject\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n }\n `);\n });\n\n it(\"Restricted view datasources are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"bar\": { type: \"string\" },\n },\n datasource: { type: \"restrictedView\" },\n });\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"restrictedViewV2\": {\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n },\n \"restrictedViewRid\": \"com.palantir.foo\",\n },\n \"type\": \"restrictedViewV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Edit only properties are properly defined\", () => {\n const object = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"fizz\",\n properties: {\n \"bar\": {\n type: \"string\",\n editOnly: true,\n },\n \"fizz\": {\n type: \"string\",\n },\n },\n });\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"editOnly\": {},\n \"type\": \"editOnly\",\n },\n \"fizz\": {\n \"column\": \"fizz\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Foo\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Foo\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"fizz\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Fails if edit only property is primary key\", () => {\n expect(() => {\n defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"Foo\",\n pluralDisplayName: \"Foo\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\", editOnly: true } },\n });\n }).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Primary key property bar on object foo cannot be edit-only]`,\n );\n });\n\n it(\"Fail if stream retention period is not ISO 8601 compliant\", () => {\n expect(() =>\n defineObject({\n titlePropertyApiName: \"buzz\",\n displayName: \"streamBackedObjectWithRetention\",\n pluralDisplayName: \"streamBackedObjectWithRetention\",\n apiName: \"buzz\",\n primaryKeyPropertyApiName: \"buzz\",\n properties: { \"buzz\": { type: \"string\" } },\n datasource: {\n type: \"stream\",\n retentionPeriod: \"bad retention period string\",\n },\n })\n ).toThrowErrorMatchingInlineSnapshot(\n `[Error: Invariant failed: Retention period \"bad retention period string\" on object \"buzz\" is not a valid ISO 8601 duration string]`,\n );\n });\n\n it(\"Property-level datasources are properly defined\", () => {\n const exampleObject = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"exampleObject\",\n pluralDisplayName: \"exampleObject\",\n apiName: \"fizz\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"fizz\": { type: \"mediaReference\" },\n \"bar\": { type: \"string\" },\n },\n datasource: { type: \"stream\" },\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.fizz\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"mediaSetView\": {\n \"assumedMarkings\": [],\n \"mediaSetViewLocator\": \"com.palantir.fizz.fizz\",\n \"properties\": [\n \"fizz\",\n ],\n },\n \"type\": \"mediaSetView\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.fizz\",\n },\n {\n \"datasource\": {\n \"streamV2\": {\n \"propertyMapping\": {\n \"bar\": \"bar\",\n \"fizz\": \"fizz\",\n },\n \"propertySecurityGroups\": undefined,\n \"retentionPolicy\": {\n \"none\": {},\n \"type\": \"none\",\n },\n \"streamLocator\": \"com.palantir.fizz\",\n },\n \"type\": \"streamV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.fizz\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.fizz\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"exampleObject\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"exampleObject\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"mediaReference\": {},\n \"type\": \"mediaReference\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n });\n\n describe(\"Marking Constraints\", () => {\n it(\"supports marking constraints with CBAC type and markingInputGroupName\", () => {\n const obj = defineObject({\n titlePropertyApiName: \"title\",\n displayName: \"Document\",\n pluralDisplayName: \"Documents\",\n apiName: \"document\",\n primaryKeyPropertyApiName: \"title\",\n properties: {\n \"title\": {\n type: \"string\",\n displayName: \"Title\",\n },\n \"classification\": {\n type: {\n type: \"marking\",\n markingType: \"CBAC\",\n markingInputGroupName: \"classificationGroup\",\n },\n displayName: \"Classification\",\n },\n },\n });\n\n const ontology = dumpOntologyFullMetadata();\n const classificationConstraint = ontology.blockData\n .objectTypes[\"com.palantir.document\"].datasources[0].dataSecurity\n ?.classificationConstraint!;\n expect(classificationConstraint.markingGroupName).toEqual(\n \"classificationGroup\",\n );\n });\n });\n\n describe(\"Actions\", () => {\n it(\"Interface actions are properly defined\", () => {\n const exampleAction = defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"addInterfaceRule\",\n addInterfaceRule: {\n interfaceApiName: \"foo\",\n objectTypeParameter: \"param1\",\n sharedPropertyValues: {},\n },\n }],\n parameters: [{\n id: \"param1\",\n displayName: \"param1\",\n type: \"boolean\",\n validation: { required: true, allowedValues: { type: \"boolean\" } },\n }],\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addInterfaceRule\": {\n \"interfaceApiName\": \"com.palantir.foo\",\n \"objectTypeParameter\": \"param1\",\n \"sharedPropertyValues\": {},\n },\n \"type\": \"addInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"param1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"checkbox\": {},\n \"type\": \"checkbox\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"boolean\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"type\": \"boolean\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"exampleAction\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"param1\",\n ],\n \"parameters\": {\n \"param1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"param1\",\n \"typeClasses\": [],\n },\n \"id\": \"param1\",\n \"type\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n it(\"Simple interface actions (with object types) are properly defined\", () => {\n const exampleStructPropertyType = defineSharedPropertyType({\n apiName: \"property2\",\n type: {\n type: \"struct\",\n structDefinition: {\n simpleProperty: \"string\",\n },\n },\n });\n const mySpt = defineSharedPropertyType({\n apiName: \"mySpt\",\n type: \"string\",\n });\n const exampleInterface = defineInterface({\n apiName: \"exampleInterface\",\n properties: {\n mySpt,\n property1: \"string\",\n property2: exampleStructPropertyType,\n },\n });\n\n const exampleObjectType = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"exampleObjectType\",\n pluralDisplayName: \"exampleObjectTypes\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"bar\": { type: \"string\" },\n \"property1\": { type: \"string\" },\n \"property2\": {\n type: {\n type: \"struct\",\n structDefinition: { simpleProperty: \"string\" },\n },\n },\n },\n implementsInterfaces: [{\n implements: exampleInterface,\n propertyMapping: [\n {\n interfaceProperty: \"com.palantir.mySpt\",\n mapsTo: \"bar\",\n },\n {\n interfaceProperty: \"com.palantir.property1\",\n mapsTo: \"property1\",\n },\n {\n interfaceProperty: \"com.palantir.property2\",\n mapsTo: \"property2\",\n },\n ],\n }],\n });\n\n const createActionWithObjectType = defineCreateInterfaceObjectAction(\n exampleInterface,\n exampleObjectType,\n );\n\n const modifyAction = defineModifyInterfaceObjectAction(\n exampleInterface,\n exampleObjectType,\n );\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-example-interface-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addInterfaceRule\": {\n \"interfaceApiName\": \"com.palantir.exampleInterface\",\n \"objectTypeParameter\": \"objectTypeParameter\",\n \"sharedPropertyValues\": {\n \"com.palantir.mySpt\": {\n \"parameterId\": \"com.palantir.mySpt\",\n \"type\": \"parameterId\",\n },\n \"com.palantir.property1\": {\n \"parameterId\": \"com.palantir.property1\",\n \"type\": \"parameterId\",\n },\n },\n },\n \"type\": \"addInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"com.palantir.mySpt\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"com.palantir.property1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"objectTypeParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"oneOf\": {\n \"oneOf\": {\n \"labelledValues\": [\n {\n \"label\": \"exampleObjectType\",\n \"value\": {\n \"objectType\": {\n \"objectTypeId\": \"com.palantir.foo\",\n },\n \"type\": \"objectType\",\n },\n },\n ],\n \"otherValueAllowed\": {\n \"allowed\": false,\n },\n },\n \"type\": \"oneOf\",\n },\n \"type\": \"oneOf\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-example-interface-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create exampleInterface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [\n \"com.palantir.exampleInterface\",\n ],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectTypeParameter\",\n \"com.palantir.mySpt\",\n \"com.palantir.property1\",\n ],\n \"parameters\": {\n \"com.palantir.mySpt\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.mySpt\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"com.palantir.property1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"property1\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.property1\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"objectTypeParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Object type to create\",\n \"typeClasses\": [],\n },\n \"id\": \"objectTypeParameter\",\n \"type\": {\n \"objectTypeReference\": {\n \"interfaceTypeRids\": [\n \"com.palantir.exampleInterface\",\n ],\n },\n \"type\": \"objectTypeReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.modify-example-interface-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyInterfaceRule\": {\n \"interfaceObjectToModifyParameter\": \"interfaceObjectToModifyParameter\",\n \"sharedPropertyValues\": {\n \"com.palantir.mySpt\": {\n \"parameterId\": \"com.palantir.mySpt\",\n \"type\": \"parameterId\",\n },\n \"com.palantir.property1\": {\n \"parameterId\": \"com.palantir.property1\",\n \"type\": \"parameterId\",\n },\n },\n },\n \"type\": \"modifyInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"com.palantir.mySpt\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"com.palantir.property1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"interfaceObjectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"oneOf\": {\n \"oneOf\": {\n \"labelledValues\": [\n {\n \"label\": \"exampleObjectType\",\n \"value\": {\n \"objectType\": {\n \"objectTypeId\": \"com.palantir.foo\",\n },\n \"type\": \"objectType\",\n },\n },\n ],\n \"otherValueAllowed\": {\n \"allowed\": false,\n },\n },\n \"type\": \"oneOf\",\n },\n \"type\": \"oneOf\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.modify-example-interface-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Modify exampleInterface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [\n \"com.palantir.exampleInterface\",\n ],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"interfaceObjectToModifyParameter\",\n \"com.palantir.mySpt\",\n \"com.palantir.property1\",\n ],\n \"parameters\": {\n \"com.palantir.mySpt\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.mySpt\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"com.palantir.property1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"property1\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.property1\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"interfaceObjectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Object type to modify\",\n \"typeClasses\": [],\n },\n \"id\": \"interfaceObjectToModifyParameter\",\n \"type\": {\n \"interfaceReference\": {\n \"interfaceTypeRid\": \"com.palantir.exampleInterface\",\n },\n \"type\": \"interfaceReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.exampleInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.exampleInterface\",\n \"displayMetadata\": {\n \"description\": \"exampleInterface\",\n \"displayName\": \"exampleInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.mySpt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.mySpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"mySpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"property1\": {\n \"column\": \"property1\",\n \"type\": \"column\",\n },\n \"property2\": {\n \"struct\": {\n \"column\": \"property2\",\n \"mapping\": {\n \"simpleProperty\": {\n \"apiName\": \"simpleProperty\",\n \"mappings\": {},\n },\n },\n },\n \"type\": \"struct\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"exampleObjectType\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"exampleObjectTypes\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [\n {\n \"interfaceTypeApiName\": \"com.palantir.exampleInterface\",\n \"linksV2\": {},\n \"properties\": {\n \"com.palantir.mySpt\": {\n \"propertyTypeRid\": \"bar\",\n },\n \"com.palantir.property1\": {\n \"propertyTypeRid\": \"property1\",\n },\n \"com.palantir.property2\": {\n \"propertyTypeRid\": \"property2\",\n },\n },\n \"propertiesV2\": {},\n },\n ],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"property1\": {\n \"apiName\": \"property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Property1\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"property2\": {\n \"apiName\": \"property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Property2\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {\n \"com.palantir.mySpt\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.mySpt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"mySpt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.property2\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Concrete actions are properly defined\", () => {\n const exampleAction = defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"addOrModifyObjectRuleV2\",\n addOrModifyObjectRuleV2: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: {\n \"bar\": {\n type: \"parameterId\",\n parameterId: \"param1\",\n },\n },\n structFieldValues: {},\n },\n }],\n parameters: [{\n id: \"param1\",\n displayName: \"param1\",\n type: \"boolean\",\n validation: { required: true, allowedValues: { type: \"boolean\" } },\n }],\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addOrModifyObjectRuleV2\": {\n \"objectToModify\": \"objectToModifyParameter\",\n \"propertyValues\": {\n \"bar\": {\n \"parameterId\": \"param1\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addOrModifyObjectRuleV2\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"param1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"checkbox\": {},\n \"type\": \"checkbox\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"boolean\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"type\": \"boolean\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"exampleAction\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"param1\",\n ],\n \"parameters\": {\n \"param1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"param1\",\n \"typeClasses\": [],\n },\n \"id\": \"param1\",\n \"type\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Conditional overrides on actions are properly defined\", () => {\n const exampleAction = defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"objectToModifyParameter\",\n propertyValues: {\n \"bar\": {\n type: \"parameterId\",\n parameterId: \"param1\",\n },\n },\n structFieldValues: {},\n },\n }],\n parameters: [{\n id: \"param1\",\n displayName: \"param1\",\n type: \"boolean\",\n validation: {\n required: true,\n allowedValues: { type: \"boolean\" },\n defaultVisibility: \"editable\",\n conditionalOverrides: [\n {\n type: \"visibility\",\n condition: {\n type: \"group\",\n name: \"myGroup\",\n },\n },\n ],\n },\n }, {\n id: \"objectToModifyParameter\",\n displayName: \"objectToModifyParameter\",\n type: \"objectTypeReference\",\n validation: {\n required: true,\n allowedValues: { type: \"objectTypeReference\", interfaceTypes: [] },\n defaultVisibility: \"editable\",\n },\n }],\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyObjectRule\": {\n \"objectToModify\": \"objectToModifyParameter\",\n \"propertyValues\": {\n \"bar\": {\n \"parameterId\": \"param1\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"modifyObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"objectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectTypeReference\": {\n \"objectTypeReference\": {\n \"interfaceTypeRids\": [],\n },\n \"type\": \"objectTypeReference\",\n },\n \"type\": \"objectTypeReference\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"param1\": {\n \"conditionalOverrides\": [\n {\n \"condition\": {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"groupIds\": {},\n \"type\": \"groupIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"myGroup\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n \"parameterBlockOverrides\": [\n {\n \"type\": \"visibility\",\n \"visibility\": {\n \"visibility\": {\n \"hidden\": {},\n \"type\": \"hidden\",\n },\n },\n },\n ],\n },\n ],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"checkbox\": {},\n \"type\": \"checkbox\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"boolean\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n \"type\": \"boolean\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"exampleAction\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"param1\",\n \"objectToModifyParameter\",\n ],\n \"parameters\": {\n \"objectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"objectToModifyParameter\",\n \"typeClasses\": [],\n },\n \"id\": \"objectToModifyParameter\",\n \"type\": {\n \"objectTypeReference\": {},\n \"type\": \"objectTypeReference\",\n },\n },\n \"param1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"param1\",\n \"typeClasses\": [],\n },\n \"id\": \"param1\",\n \"type\": {\n \"boolean\": {},\n \"type\": \"boolean\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Simple concrete actions are properly defined\", () => {\n const exampleObjectType = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"exampleObjectType\",\n pluralDisplayName: \"exampleObjectTypes\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"bar\",\n properties: {\n \"bar\": { type: \"string\" },\n \"structProp\": {\n type: {\n type: \"struct\",\n structDefinition: { simpleProperty: \"string\" },\n },\n },\n },\n });\n\n const createObjectActionType = defineCreateObjectAction(\n {\n objectType: exampleObjectType,\n },\n );\n const modifyObjectActionType = defineModifyObjectAction(\n {\n objectType: exampleObjectType,\n },\n );\n const deleteObjectActionType = defineDeleteObjectAction(\n {\n objectType: exampleObjectType,\n },\n );\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-object-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addObjectRule\": {\n \"objectTypeId\": \"com.palantir.foo\",\n \"propertyValues\": {\n \"bar\": {\n \"parameterId\": \"bar\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"bar\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-object-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create exampleObjectType\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.foo\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"bar\",\n ],\n \"parameters\": {\n \"bar\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Bar\",\n \"typeClasses\": [],\n },\n \"id\": \"bar\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.delete-object-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"deleteObjectRule\": {\n \"objectToDelete\": \"objectToDeleteParameter\",\n },\n \"type\": \"deleteObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"objectToDeleteParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectQuery\": {\n \"objectQuery\": {},\n \"type\": \"objectQuery\",\n },\n \"type\": \"objectQuery\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.delete-object-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Delete exampleObjectType\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.foo\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectToDeleteParameter\",\n ],\n \"parameters\": {\n \"objectToDeleteParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Delete object\",\n \"typeClasses\": [],\n },\n \"id\": \"objectToDeleteParameter\",\n \"type\": {\n \"objectReference\": {\n \"objectTypeId\": \"com.palantir.foo\",\n },\n \"type\": \"objectReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.modify-object-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyObjectRule\": {\n \"objectToModify\": \"objectToModifyParameter\",\n \"propertyValues\": {},\n \"structFieldValues\": {},\n },\n \"type\": \"modifyObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"objectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectQuery\": {\n \"objectQuery\": {},\n \"type\": \"objectQuery\",\n },\n \"type\": \"objectQuery\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.modify-object-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Modify exampleObjectType\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.foo\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectToModifyParameter\",\n ],\n \"parameters\": {\n \"objectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Modify object\",\n \"typeClasses\": [],\n },\n \"id\": \"objectToModifyParameter\",\n \"type\": {\n \"objectReference\": {\n \"objectTypeId\": \"com.palantir.foo\",\n },\n \"type\": \"objectReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"structProp\": {\n \"struct\": {\n \"column\": \"structProp\",\n \"mapping\": {\n \"simpleProperty\": {\n \"apiName\": \"simpleProperty\",\n \"mappings\": {},\n },\n },\n },\n \"type\": \"struct\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"exampleObjectType\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"exampleObjectTypes\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"bar\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"structProp\": {\n \"apiName\": \"structProp\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"StructProp\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"struct\": {\n \"structFields\": [\n {\n \"aliases\": [],\n \"apiName\": \"simpleProperty\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"simpleProperty\",\n },\n \"fieldType\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n },\n ],\n },\n \"type\": \"struct\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Customizations on CRUD actions are properly defined\", () => {\n const exampleObjectType = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"exampleObjectType\",\n pluralDisplayName: \"exampleObjectTypes\",\n apiName: \"foo\",\n primaryKeyPropertyApiName: \"primary\",\n properties: {\n \"bar\": { type: \"string\" },\n \"fizz\": { type: \"string\" },\n \"buzz\": { type: \"string\" },\n \"primary\": { type: \"string\" },\n },\n });\n\n const createObjectActionType = defineCreateObjectAction(\n {\n objectType: exampleObjectType,\n actionLevelValidation: {\n condition: {\n type: \"group\",\n name: \"actionLevelGroup\",\n },\n },\n parameterLevelValidations: {\n \"fizz\": {\n required: false,\n conditionalOverrides: [\n {\n type: \"required\",\n condition: {\n type: \"and\",\n conditions: [\n {\n type: \"group\",\n name: \"parameterLevelGroup\",\n },\n {\n type: \"parameter\",\n parameterId: \"bar\",\n matches: {\n type: \"staticValue\",\n staticValue: {\n type: \"string\",\n string: \"bar\",\n },\n },\n },\n ],\n },\n },\n ],\n },\n },\n excludedProperties: [\"buzz\"],\n },\n );\n\n const modifyObjectActionType = defineModifyObjectAction(\n {\n objectType: exampleObjectType,\n actionLevelValidation: {\n condition: {\n type: \"group\",\n name: \"actionLevelGroup\",\n },\n },\n parameterLevelValidations: {\n \"fizz\": {\n required: false,\n conditionalOverrides: [\n {\n type: \"required\",\n condition: {\n type: \"and\",\n conditions: [\n {\n type: \"group\",\n name: \"parameterLevelGroup\",\n },\n {\n type: \"parameter\",\n parameterId: \"bar\",\n matches: {\n type: \"staticValue\",\n staticValue: {\n type: \"string\",\n string: \"bar\",\n },\n },\n },\n ],\n },\n },\n ],\n },\n },\n excludedProperties: [\"buzz\"],\n },\n );\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-object-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addObjectRule\": {\n \"objectTypeId\": \"com.palantir.foo\",\n \"propertyValues\": {\n \"bar\": {\n \"parameterId\": \"bar\",\n \"type\": \"parameterId\",\n },\n \"fizz\": {\n \"parameterId\": \"fizz\",\n \"type\": \"parameterId\",\n },\n \"primary\": {\n \"parameterId\": \"primary\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"groupIds\": {},\n \"type\": \"groupIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"actionLevelGroup\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"Did not satisfy validation\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"bar\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"fizz\": {\n \"conditionalOverrides\": [\n {\n \"condition\": {\n \"and\": {\n \"conditions\": [\n {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"groupIds\": {},\n \"type\": \"groupIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"parameterLevelGroup\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n {\n \"comparison\": {\n \"left\": {\n \"parameterId\": \"bar\",\n \"type\": \"parameterId\",\n },\n \"operator\": \"EQUALS\",\n \"right\": {\n \"staticValue\": {\n \"string\": \"bar\",\n \"type\": \"string\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n ],\n },\n \"type\": \"and\",\n },\n \"parameterBlockOverrides\": [\n {\n \"parameterRequired\": {\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n \"type\": \"parameterRequired\",\n },\n ],\n },\n ],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"notRequired\": {},\n \"type\": \"notRequired\",\n },\n },\n },\n },\n \"primary\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-object-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create exampleObjectType\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.foo\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"bar\",\n \"fizz\",\n \"primary\",\n ],\n \"parameters\": {\n \"bar\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Bar\",\n \"typeClasses\": [],\n },\n \"id\": \"bar\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"fizz\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Fizz\",\n \"typeClasses\": [],\n },\n \"id\": \"fizz\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"primary\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Primary\",\n \"typeClasses\": [],\n },\n \"id\": \"primary\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.modify-object-foo\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyObjectRule\": {\n \"objectToModify\": \"objectToModifyParameter\",\n \"propertyValues\": {\n \"bar\": {\n \"parameterId\": \"bar\",\n \"type\": \"parameterId\",\n },\n \"fizz\": {\n \"parameterId\": \"fizz\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"modifyObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"groupIds\": {},\n \"type\": \"groupIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"actionLevelGroup\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"Did not satisfy validation\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"bar\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"notRequired\": {},\n \"type\": \"notRequired\",\n },\n },\n },\n },\n \"fizz\": {\n \"conditionalOverrides\": [\n {\n \"condition\": {\n \"and\": {\n \"conditions\": [\n {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"groupIds\": {},\n \"type\": \"groupIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"parameterLevelGroup\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n {\n \"comparison\": {\n \"left\": {\n \"parameterId\": \"bar\",\n \"type\": \"parameterId\",\n },\n \"operator\": \"EQUALS\",\n \"right\": {\n \"staticValue\": {\n \"string\": \"bar\",\n \"type\": \"string\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n ],\n },\n \"type\": \"and\",\n },\n \"parameterBlockOverrides\": [\n {\n \"parameterRequired\": {\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n \"type\": \"parameterRequired\",\n },\n ],\n },\n ],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"notRequired\": {},\n \"type\": \"notRequired\",\n },\n },\n },\n },\n \"objectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectQuery\": {\n \"objectQuery\": {},\n \"type\": \"objectQuery\",\n },\n \"type\": \"objectQuery\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.modify-object-foo\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Modify exampleObjectType\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.foo\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectToModifyParameter\",\n \"bar\",\n \"fizz\",\n ],\n \"parameters\": {\n \"bar\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Bar\",\n \"typeClasses\": [],\n },\n \"id\": \"bar\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"fizz\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Fizz\",\n \"typeClasses\": [],\n },\n \"id\": \"fizz\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"objectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Modify object\",\n \"typeClasses\": [],\n },\n \"id\": \"objectToModifyParameter\",\n \"type\": {\n \"objectReference\": {\n \"objectTypeId\": \"com.palantir.foo\",\n },\n \"type\": \"objectReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {\n \"com.palantir.create-object-foo\": {\n \"restrictionStatus\": {\n \"hasRolesApplied\": true,\n \"ontologyPackageRid\": null,\n \"publicProject\": false,\n },\n },\n \"com.palantir.modify-object-foo\": {\n \"restrictionStatus\": {\n \"hasRolesApplied\": true,\n \"ontologyPackageRid\": null,\n \"publicProject\": false,\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.foo\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.foo\",\n \"propertyMapping\": {\n \"bar\": {\n \"column\": \"bar\",\n \"type\": \"column\",\n },\n \"buzz\": {\n \"column\": \"buzz\",\n \"type\": \"column\",\n },\n \"fizz\": {\n \"column\": \"fizz\",\n \"type\": \"column\",\n },\n \"primary\": {\n \"column\": \"primary\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.foo\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.foo\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"exampleObjectType\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"exampleObjectTypes\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"primary\",\n ],\n \"propertyTypes\": {\n \"bar\": {\n \"apiName\": \"bar\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Bar\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"buzz\": {\n \"apiName\": \"buzz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Buzz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"fizz\": {\n \"apiName\": \"fizz\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Fizz\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"primary\": {\n \"apiName\": \"primary\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Primary\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"bar\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"ModifyObjectRule requires objectToModify parameter\", () => {\n const sampleObject = defineObject({\n apiName: \"sampleObject\",\n displayName: \"Test Object\",\n description: \"Sample object description\",\n primaryKeyPropertyApiName: \"id\",\n pluralDisplayName: \"tests\",\n titlePropertyApiName: \"name\",\n properties: {\n \"name\": {\n type: \"string\",\n description: \"The name of the test object\",\n },\n \"id\": { type: \"string\", description: \"The ID of the test object\" },\n },\n });\n expect(() =>\n defineAction({\n apiName: \"foo\",\n displayName: \"exampleAction\",\n status: \"active\",\n rules: [{\n type: \"modifyObjectRule\",\n modifyObjectRule: {\n objectToModify: \"sampleObject\",\n propertyValues: {\n \"name\": {\n type: \"parameterId\",\n parameterId: \"name\",\n },\n },\n structFieldValues: {},\n },\n }],\n parameters: [{\n id: \"name\",\n displayName: \"Name\",\n type: \"string\",\n validation: { required: true, allowedValues: { type: \"text\" } },\n }],\n })\n ).toThrowError(\n \"Invariant failed: Object to modify parameter must be defined in parameters\",\n );\n });\n\n it(\"Simple interface actions (without object types) are properly defined\", () => {\n const exampleInterface = defineInterface({\n apiName: \"exampleInterface\",\n properties: {\n property1: \"string\",\n },\n });\n const createAction = defineCreateInterfaceObjectAction(exampleInterface);\n const modifyAction = defineModifyInterfaceObjectAction(exampleInterface);\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-example-interface\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addInterfaceRule\": {\n \"interfaceApiName\": \"com.palantir.exampleInterface\",\n \"objectTypeParameter\": \"objectTypeParameter\",\n \"sharedPropertyValues\": {\n \"com.palantir.property1\": {\n \"parameterId\": \"com.palantir.property1\",\n \"type\": \"parameterId\",\n },\n },\n },\n \"type\": \"addInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"com.palantir.property1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"objectTypeParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectTypeReference\": {\n \"objectTypeReference\": {\n \"interfaceTypeRids\": [\n \"com.palantir.exampleInterface\",\n ],\n },\n \"type\": \"objectTypeReference\",\n },\n \"type\": \"objectTypeReference\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-example-interface\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create exampleInterface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [\n \"com.palantir.exampleInterface\",\n ],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectTypeParameter\",\n \"com.palantir.property1\",\n ],\n \"parameters\": {\n \"com.palantir.property1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"property1\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.property1\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"objectTypeParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Object type to create\",\n \"typeClasses\": [],\n },\n \"id\": \"objectTypeParameter\",\n \"type\": {\n \"objectTypeReference\": {\n \"interfaceTypeRids\": [\n \"com.palantir.exampleInterface\",\n ],\n },\n \"type\": \"objectTypeReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.modify-example-interface\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyInterfaceRule\": {\n \"interfaceObjectToModifyParameter\": \"interfaceObjectToModifyParameter\",\n \"sharedPropertyValues\": {\n \"com.palantir.property1\": {\n \"parameterId\": \"com.palantir.property1\",\n \"type\": \"parameterId\",\n },\n },\n },\n \"type\": \"modifyInterfaceRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"com.palantir.property1\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"interfaceObjectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"interfaceObjectQuery\": {\n \"interfaceObjectQuery\": {},\n \"type\": \"interfaceObjectQuery\",\n },\n \"type\": \"interfaceObjectQuery\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.modify-example-interface\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Modify exampleInterface\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [\n \"com.palantir.exampleInterface\",\n ],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"interfaceObjectToModifyParameter\",\n \"com.palantir.property1\",\n ],\n \"parameters\": {\n \"com.palantir.property1\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"property1\",\n \"typeClasses\": [],\n },\n \"id\": \"com.palantir.property1\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"interfaceObjectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Object type to modify\",\n \"typeClasses\": [],\n },\n \"id\": \"interfaceObjectToModifyParameter\",\n \"type\": {\n \"interfaceReference\": {\n \"interfaceTypeRid\": \"com.palantir.exampleInterface\",\n },\n \"type\": \"interfaceReference\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.exampleInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.exampleInterface\",\n \"displayMetadata\": {\n \"description\": \"exampleInterface\",\n \"displayName\": \"exampleInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {\n \"com.palantir.property1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Actions with group permissions are properly defined\", () => {\n const sampleObject = defineObject({\n apiName: \"sampleObject\",\n displayName: \"Test Object\",\n description: \"Sample object description\",\n primaryKeyPropertyApiName: \"id\",\n pluralDisplayName: \"tests\",\n titlePropertyApiName: \"name\",\n properties: {\n \"name\": {\n type: \"string\",\n description: \"The name of the test object\",\n },\n \"id\": {\n type: \"string\",\n displayName: \"ID\",\n description: \"The ID of the test object\",\n },\n },\n });\n const createAction = defineCreateObjectAction({\n objectType: sampleObject,\n actionLevelValidation: {\n condition: {\n type: \"group\",\n name: \"testGroup\",\n },\n },\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-object-sample-object\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addObjectRule\": {\n \"objectTypeId\": \"com.palantir.sampleObject\",\n \"propertyValues\": {\n \"id\": {\n \"parameterId\": \"id\",\n \"type\": \"parameterId\",\n },\n \"name\": {\n \"parameterId\": \"name\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"groupIds\": {},\n \"type\": \"groupIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"testGroup\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"Did not satisfy validation\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"id\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"name\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-object-sample-object\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create Test Object\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.sampleObject\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"name\",\n \"id\",\n ],\n \"parameters\": {\n \"id\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"ID\",\n \"typeClasses\": [],\n },\n \"id\": \"id\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"name\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Name\",\n \"typeClasses\": [],\n },\n \"id\": \"name\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {\n \"com.palantir.create-object-sample-object\": {\n \"restrictionStatus\": {\n \"hasRolesApplied\": true,\n \"ontologyPackageRid\": null,\n \"publicProject\": false,\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.sampleObject\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.sampleObject\",\n \"propertyMapping\": {\n \"id\": {\n \"column\": \"id\",\n \"type\": \"column\",\n },\n \"name\": {\n \"column\": \"name\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.sampleObject\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.sampleObject\",\n \"displayMetadata\": {\n \"description\": \"Sample object description\",\n \"displayName\": \"Test Object\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"tests\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"id\",\n ],\n \"propertyTypes\": {\n \"id\": {\n \"apiName\": \"id\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": \"The ID of the test object\",\n \"displayName\": \"ID\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"name\": {\n \"apiName\": \"name\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": \"The name of the test object\",\n \"displayName\": \"Name\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"name\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Actions with custom permissions are properly defined\", () => {\n const sampleObject = defineObject({\n apiName: \"sampleObject\",\n displayName: \"Test Object\",\n description: \"Sample object description\",\n primaryKeyPropertyApiName: \"id\",\n pluralDisplayName: \"tests\",\n titlePropertyApiName: \"name\",\n properties: {\n \"name\": {\n type: \"string\",\n description: \"The name of the test object\",\n },\n \"id\": {\n type: \"string\",\n displayName: \"ID\",\n description: \"The ID of the test object\",\n },\n },\n });\n const createAction = defineCreateObjectAction({\n objectType: sampleObject,\n actionLevelValidation: {\n displayMetadata: {\n failureMessage:\n \"Insufficient permissions. Missing organization membership required to submit action\",\n typeClasses: [],\n },\n condition: {\n type: \"comparison\",\n comparison: {\n operator: \"INTERSECTS\",\n left: {\n type: \"userProperty\",\n userProperty: {\n userId: {\n type: \"currentUser\",\n currentUser: {},\n },\n propertyValue: {\n type: \"organizationMarkingIds\",\n organizationMarkingIds: {},\n },\n },\n },\n right: {\n type: \"staticValue\",\n staticValue: {\n type: \"stringList\",\n stringList: {\n strings: [\n \"87ef507e-f954-457e-ad68-e0df71ef7567\",\n ],\n },\n },\n },\n },\n },\n },\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-object-sample-object\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addObjectRule\": {\n \"objectTypeId\": \"com.palantir.sampleObject\",\n \"propertyValues\": {\n \"id\": {\n \"parameterId\": \"id\",\n \"type\": \"parameterId\",\n },\n \"name\": {\n \"parameterId\": \"name\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"comparison\": {\n \"left\": {\n \"type\": \"userProperty\",\n \"userProperty\": {\n \"propertyValue\": {\n \"organizationMarkingIds\": {},\n \"type\": \"organizationMarkingIds\",\n },\n \"userId\": {\n \"currentUser\": {},\n \"type\": \"currentUser\",\n },\n },\n },\n \"operator\": \"INTERSECTS\",\n \"right\": {\n \"staticValue\": {\n \"stringList\": {\n \"strings\": [\n \"87ef507e-f954-457e-ad68-e0df71ef7567\",\n ],\n },\n \"type\": \"stringList\",\n },\n \"type\": \"staticValue\",\n },\n },\n \"type\": \"comparison\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"Insufficient permissions. Missing organization membership required to submit action\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"id\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"name\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-object-sample-object\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create Test Object\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.sampleObject\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"name\",\n \"id\",\n ],\n \"parameters\": {\n \"id\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"ID\",\n \"typeClasses\": [],\n },\n \"id\": \"id\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"name\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Name\",\n \"typeClasses\": [],\n },\n \"id\": \"name\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {\n \"com.palantir.create-object-sample-object\": {\n \"restrictionStatus\": {\n \"hasRolesApplied\": true,\n \"ontologyPackageRid\": null,\n \"publicProject\": false,\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.sampleObject\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.sampleObject\",\n \"propertyMapping\": {\n \"id\": {\n \"column\": \"id\",\n \"type\": \"column\",\n },\n \"name\": {\n \"column\": \"name\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.sampleObject\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.sampleObject\",\n \"displayMetadata\": {\n \"description\": \"Sample object description\",\n \"displayName\": \"Test Object\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"tests\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"id\",\n ],\n \"propertyTypes\": {\n \"id\": {\n \"apiName\": \"id\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": \"The ID of the test object\",\n \"displayName\": \"ID\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"name\": {\n \"apiName\": \"name\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": \"The name of the test object\",\n \"displayName\": \"Name\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"name\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n\n it(\"Array property validation is correctly structured for actions\", () => {\n const objectWithArrays = defineObject({\n apiName: \"objectWithArrays\",\n displayName: \"Object With Arrays\",\n primaryKeyPropertyApiName: \"id\",\n titlePropertyApiName: \"id\",\n pluralDisplayName: \"Objects With Arrays\",\n properties: {\n \"id\": { type: \"string\", displayName: \"ID\" },\n \"tags\": { type: \"string\", array: true, displayName: \"Tags\" },\n \"numbers\": { type: \"integer\", array: true, displayName: \"Numbers\" },\n \"singleValue\": { type: \"string\", displayName: \"Single Value\" },\n },\n });\n\n const createAction = defineCreateObjectAction({\n objectType: objectWithArrays,\n });\n const modifyAction = defineModifyObjectAction({\n objectType: objectWithArrays,\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {\n \"com.palantir.create-object-object-with-arrays\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"addObjectRule\": {\n \"objectTypeId\": \"com.palantir.objectWithArrays\",\n \"propertyValues\": {\n \"id\": {\n \"parameterId\": \"id\",\n \"type\": \"parameterId\",\n },\n \"numbers\": {\n \"parameterId\": \"numbers\",\n \"type\": \"parameterId\",\n },\n \"singleValue\": {\n \"parameterId\": \"singleValue\",\n \"type\": \"parameterId\",\n },\n \"tags\": {\n \"parameterId\": \"tags\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"addObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"id\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"numbers\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"numericInput\": {},\n \"type\": \"numericInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"range\": {\n \"range\": {},\n \"type\": \"range\",\n },\n \"type\": \"range\",\n },\n \"required\": {\n \"listLengthValidation\": {\n \"maxLength\": undefined,\n \"minLength\": undefined,\n },\n \"type\": \"listLengthValidation\",\n },\n },\n },\n },\n \"singleValue\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"tags\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"listLengthValidation\": {\n \"maxLength\": undefined,\n \"minLength\": undefined,\n },\n \"type\": \"listLengthValidation\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.create-object-object-with-arrays\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Create Object With Arrays\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.objectWithArrays\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"id\",\n \"tags\",\n \"numbers\",\n \"singleValue\",\n ],\n \"parameters\": {\n \"id\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"ID\",\n \"typeClasses\": [],\n },\n \"id\": \"id\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"numbers\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Numbers\",\n \"typeClasses\": [],\n },\n \"id\": \"numbers\",\n \"type\": {\n \"integerList\": {},\n \"type\": \"integerList\",\n },\n },\n \"singleValue\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Single Value\",\n \"typeClasses\": [],\n },\n \"id\": \"singleValue\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"tags\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Tags\",\n \"typeClasses\": [],\n },\n \"id\": \"tags\",\n \"type\": {\n \"stringList\": {},\n \"type\": \"stringList\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"com.palantir.modify-object-object-with-arrays\": {\n \"actionType\": {\n \"actionTypeLogic\": {\n \"logic\": {\n \"rules\": [\n {\n \"modifyObjectRule\": {\n \"objectToModify\": \"objectToModifyParameter\",\n \"propertyValues\": {\n \"numbers\": {\n \"parameterId\": \"numbers\",\n \"type\": \"parameterId\",\n },\n \"singleValue\": {\n \"parameterId\": \"singleValue\",\n \"type\": \"parameterId\",\n },\n \"tags\": {\n \"parameterId\": \"tags\",\n \"type\": \"parameterId\",\n },\n },\n \"structFieldValues\": {},\n },\n \"type\": \"modifyObjectRule\",\n },\n ],\n },\n \"validation\": {\n \"actionTypeLevelValidation\": {\n \"rules\": {\n \"0\": {\n \"condition\": {\n \"true\": {},\n \"type\": \"true\",\n },\n \"displayMetadata\": {\n \"failureMessage\": \"\",\n \"typeClasses\": [],\n },\n },\n },\n },\n \"parameterValidations\": {\n \"numbers\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"numericInput\": {},\n \"type\": \"numericInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"range\": {\n \"range\": {},\n \"type\": \"range\",\n },\n \"type\": \"range\",\n },\n \"required\": {\n \"listLengthValidation\": {\n \"maxLength\": undefined,\n \"minLength\": undefined,\n },\n \"type\": \"listLengthValidation\",\n },\n },\n },\n },\n \"objectToModifyParameter\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"dropdown\": {},\n \"type\": \"dropdown\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"objectQuery\": {\n \"objectQuery\": {},\n \"type\": \"objectQuery\",\n },\n \"type\": \"objectQuery\",\n },\n \"required\": {\n \"required\": {},\n \"type\": \"required\",\n },\n },\n },\n },\n \"singleValue\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"notRequired\": {},\n \"type\": \"notRequired\",\n },\n },\n },\n },\n \"tags\": {\n \"conditionalOverrides\": [],\n \"defaultValidation\": {\n \"display\": {\n \"renderHint\": {\n \"textInput\": {},\n \"type\": \"textInput\",\n },\n \"visibility\": {\n \"editable\": {},\n \"type\": \"editable\",\n },\n },\n \"validation\": {\n \"allowedValues\": {\n \"text\": {\n \"text\": {},\n \"type\": \"text\",\n },\n \"type\": \"text\",\n },\n \"required\": {\n \"listLengthValidation\": {\n \"maxLength\": undefined,\n \"minLength\": undefined,\n },\n \"type\": \"listLengthValidation\",\n },\n },\n },\n },\n },\n },\n },\n \"metadata\": {\n \"apiName\": \"com.palantir.modify-object-object-with-arrays\",\n \"displayMetadata\": {\n \"configuration\": {\n \"defaultLayout\": \"FORM\",\n \"displayAndFormat\": {\n \"table\": {\n \"columnWidthByParameterRid\": {},\n \"enableFileImport\": true,\n \"fitHorizontally\": false,\n \"frozenColumnCount\": 0,\n \"rowHeightInLines\": 1,\n },\n },\n \"enableLayoutUserSwitch\": false,\n },\n \"description\": \"\",\n \"displayName\": \"Modify Object With Arrays\",\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#000000\",\n \"locator\": \"edit\",\n },\n \"type\": \"blueprint\",\n },\n \"successMessage\": [],\n \"typeClasses\": [],\n },\n \"entities\": {\n \"affectedInterfaceTypes\": [],\n \"affectedLinkTypes\": [],\n \"affectedObjectTypes\": [\n \"com.palantir.objectWithArrays\",\n ],\n \"typeGroups\": [],\n },\n \"formContentOrdering\": [],\n \"parameterOrdering\": [\n \"objectToModifyParameter\",\n \"tags\",\n \"numbers\",\n \"singleValue\",\n ],\n \"parameters\": {\n \"numbers\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Numbers\",\n \"typeClasses\": [],\n },\n \"id\": \"numbers\",\n \"type\": {\n \"integerList\": {},\n \"type\": \"integerList\",\n },\n },\n \"objectToModifyParameter\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Modify object\",\n \"typeClasses\": [],\n },\n \"id\": \"objectToModifyParameter\",\n \"type\": {\n \"objectReference\": {\n \"objectTypeId\": \"com.palantir.objectWithArrays\",\n },\n \"type\": \"objectReference\",\n },\n },\n \"singleValue\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Single Value\",\n \"typeClasses\": [],\n },\n \"id\": \"singleValue\",\n \"type\": {\n \"string\": {},\n \"type\": \"string\",\n },\n },\n \"tags\": {\n \"displayMetadata\": {\n \"description\": \"\",\n \"displayName\": \"Tags\",\n \"typeClasses\": [],\n },\n \"id\": \"tags\",\n \"type\": {\n \"stringList\": {},\n \"type\": \"stringList\",\n },\n },\n },\n \"sections\": {},\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n },\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.objectWithArrays\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.objectWithArrays\",\n \"propertyMapping\": {\n \"id\": {\n \"column\": \"id\",\n \"type\": \"column\",\n },\n \"numbers\": {\n \"column\": \"numbers\",\n \"type\": \"column\",\n },\n \"singleValue\": {\n \"column\": \"singleValue\",\n \"type\": \"column\",\n },\n \"tags\": {\n \"column\": \"tags\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.objectWithArrays\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.objectWithArrays\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Object With Arrays\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"Objects With Arrays\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [],\n \"primaryKeys\": [\n \"id\",\n ],\n \"propertyTypes\": {\n \"id\": {\n \"apiName\": \"id\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"ID\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"numbers\": {\n \"apiName\": \"numbers\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Numbers\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"array\": {\n \"subtype\": {\n \"integer\": {},\n \"type\": \"integer\",\n },\n },\n \"type\": \"array\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"singleValue\": {\n \"apiName\": \"singleValue\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Single Value\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"tags\": {\n \"apiName\": \"tags\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"Tags\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"array\": {\n \"subtype\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n },\n \"type\": \"array\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"id\",\n },\n },\n },\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n });\n describe(\"Imports\", () => {\n it(\"Legacy importing works\", () => {\n const id = importSharedPropertyType({\n apiName: \"id\",\n packageName: \"com.palantir.core.ontology.types\",\n typeHint: \"string\",\n });\n const myInterface = defineInterface({\n apiName: \"myInterface\",\n properties: {\n id,\n },\n });\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.myInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.myInterface\",\n \"displayMetadata\": {\n \"description\": \"myInterface\",\n \"displayName\": \"myInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.core.ontology.types.id\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.core.ontology.types.id\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"com.palantir.core.ontology.types.id\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [\n {\n \"apiName\": \"com.palantir.core.ontology.types.id\",\n \"description\": undefined,\n \"displayName\": \"com.palantir.core.ontology.types.id\",\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n },\n ],\n },\n }\n `);\n });\n it(\"Simple importing works\", () => {\n // does the same as \"import { spt } from '@other/package'\"\n const spt: SharedPropertyType = {\n apiName: \"com.other.package.spt\",\n nonNameSpacedApiName: \"spt\",\n type: \"string\",\n __type: OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE,\n };\n importOntologyEntity(spt);\n\n const myInterface = defineInterface({\n apiName: \"myInterface\",\n properties: {\n spt,\n },\n });\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.myInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.myInterface\",\n \"displayMetadata\": {\n \"description\": \"myInterface\",\n \"displayName\": \"myInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.other.package.spt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.other.package.spt\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"com.other.package.spt\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {},\n \"sharedPropertyTypes\": {},\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [\n {\n \"apiName\": \"com.other.package.spt\",\n \"description\": undefined,\n \"displayName\": \"com.other.package.spt\",\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n },\n ],\n },\n }\n `);\n });\n it(\"Export files are generated correctly\", async () => {\n const generatedDir = path.resolve(path.join(\n __dirname,\n \"..\",\n \"generatedNoCheck\",\n \"export_files_are_generated_correctly\",\n ));\n await defineOntology(\"com.my.package.\", () => {\n const mySpt = defineSharedPropertyType({\n apiName: \"mySpt\",\n type: \"string\",\n });\n const myInterface = defineInterface({\n apiName: \"myInterface\",\n properties: {\n mySpt,\n },\n });\n const myObject = defineObject({\n titlePropertyApiName: \"bar\",\n displayName: \"My Object\",\n pluralDisplayName: \"myObjects\",\n apiName: \"myObject\",\n primaryKeyPropertyApiName: \"bar\",\n properties: { \"bar\": { type: \"string\" } },\n implementsInterfaces: [{\n implements: myInterface,\n propertyMapping: [{\n interfaceProperty: \"com.my.package.mySpt\",\n mapsTo: \"bar\",\n }],\n }],\n });\n }, generatedDir);\n\n expect(\n fs.readFileSync(\n path.join(generatedDir, \"codegen/interface-types/myInterface.ts\"),\n \"utf8\",\n ),\n ).toMatchInlineSnapshot(`\n \"\n import { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\n import type { InterfaceType } from '@osdk/maker';\n\n const myInterface_base: InterfaceType = {\n \"apiName\": \"com.my.package.myInterface\",\n \"displayMetadata\": {\n \"displayName\": \"myInterface\",\n \"description\": \"myInterface\"\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"status\": {\n \"type\": \"active\",\n \"active\": {}\n },\n \"propertiesV2\": {\n \"com.my.package.mySpt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"apiName\": \"com.my.package.mySpt\",\n \"type\": \"string\",\n \"nonNameSpacedApiName\": \"mySpt\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n }\n }\n },\n \"searchable\": true,\n \"__type\": OntologyEntityTypeEnum.INTERFACE_TYPE\n } as unknown as InterfaceType;\n \n export const myInterface: InterfaceType = wrapWithProxy(myInterface_base);\n \"\n `);\n\n expect(\n fs.readFileSync(\n path.join(generatedDir, \"codegen/object-types/myObject.ts\"),\n \"utf8\",\n ),\n ).toMatchInlineSnapshot(`\n \"\n import { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\n import type { ObjectType } from '@osdk/maker';\n\n const myObject_base: ObjectType = {\n \"titlePropertyApiName\": \"bar\",\n \"displayName\": \"My Object\",\n \"pluralDisplayName\": \"myObjects\",\n \"apiName\": \"com.my.package.myObject\",\n \"primaryKeyPropertyApiName\": \"bar\",\n \"properties\": [\n {\n \"type\": \"string\",\n \"apiName\": \"bar\",\n \"displayName\": \"Bar\"\n }\n ],\n \"implementsInterfaces\": [\n {\n \"implements\": {\n \"apiName\": \"com.my.package.myInterface\",\n \"displayMetadata\": {\n \"displayName\": \"myInterface\",\n \"description\": \"myInterface\"\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"status\": {\n \"type\": \"active\",\n \"active\": {}\n },\n \"propertiesV2\": {\n \"com.my.package.mySpt\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"apiName\": \"com.my.package.mySpt\",\n \"type\": \"string\",\n \"nonNameSpacedApiName\": \"mySpt\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n }\n }\n },\n \"searchable\": true,\n \"__type\": OntologyEntityTypeEnum.INTERFACE_TYPE\n },\n \"propertyMapping\": [\n {\n \"interfaceProperty\": \"com.my.package.mySpt\",\n \"mapsTo\": \"bar\"\n }\n ]\n }\n ],\n \"__type\": OntologyEntityTypeEnum.OBJECT_TYPE\n } as unknown as ObjectType;\n \n export const myObject: ObjectType = wrapWithProxy(myObject_base);\n \"\n `);\n\n expect(\n fs.readFileSync(\n path.join(generatedDir, \"codegen/shared-property-types/mySpt.ts\"),\n \"utf8\",\n ),\n ).toMatchInlineSnapshot(`\n \"\n import { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\n import type { SharedPropertyType } from '@osdk/maker';\n\n const mySpt_base: SharedPropertyType = {\n \"apiName\": \"com.my.package.mySpt\",\n \"type\": \"string\",\n \"nonNameSpacedApiName\": \"mySpt\",\n \"displayName\": \"mySpt\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n } as unknown as SharedPropertyType;\n \n export const mySpt: SharedPropertyType = wrapWithProxy(mySpt_base);\n \"\n `);\n fs.rmSync(path.resolve(path.join(generatedDir, \"..\")), {\n recursive: true,\n force: true,\n });\n });\n it(\"Extended interfaces are propagated to the static objects\", async () => {\n const generatedDir = path.resolve(path.join(\n __dirname,\n \"..\",\n \"generatedNoCheck\",\n \"extended_interfaces_are_propagated_to_the_static_objects\",\n ));\n await defineOntology(\"com.palantir.\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n property1: \"string\",\n },\n });\n const childInterface = defineInterface({\n apiName: \"childInterface\",\n properties: {\n property2: \"string\",\n },\n extends: [parentInterface],\n });\n }, generatedDir);\n\n expect(\n fs.readFileSync(\n path.join(generatedDir, \"codegen/interface-types/childInterface.ts\"),\n \"utf8\",\n ),\n ).toMatchInlineSnapshot(`\n \"\n import { wrapWithProxy, OntologyEntityTypeEnum } from '@osdk/maker';\n import type { InterfaceType } from '@osdk/maker';\n\n const childInterface_base: InterfaceType = {\n \"apiName\": \"com.palantir.childInterface\",\n \"displayMetadata\": {\n \"displayName\": \"childInterface\",\n \"description\": \"childInterface\"\n },\n \"extendsInterfaces\": [\n {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"displayName\": \"parentInterface\",\n \"description\": \"parentInterface\"\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"status\": {\n \"type\": \"active\",\n \"active\": {}\n },\n \"propertiesV2\": {\n \"com.palantir.property1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"apiName\": \"com.palantir.property1\",\n \"displayName\": \"property1\",\n \"type\": \"string\",\n \"array\": false,\n \"nonNameSpacedApiName\": \"property1\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n }\n }\n },\n \"searchable\": true,\n \"__type\": OntologyEntityTypeEnum.INTERFACE_TYPE\n }\n ],\n \"links\": [],\n \"status\": {\n \"type\": \"active\",\n \"active\": {}\n },\n \"propertiesV2\": {\n \"com.palantir.property2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"apiName\": \"com.palantir.property2\",\n \"displayName\": \"property2\",\n \"type\": \"string\",\n \"array\": false,\n \"nonNameSpacedApiName\": \"property2\",\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\"\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\"\n }\n ],\n \"__type\": OntologyEntityTypeEnum.SHARED_PROPERTY_TYPE\n }\n }\n },\n \"searchable\": true,\n \"__type\": OntologyEntityTypeEnum.INTERFACE_TYPE\n } as unknown as InterfaceType;\n \n export const childInterface: InterfaceType = wrapWithProxy(childInterface_base);\n \"\n `);\n fs.rmSync(path.join(generatedDir, \"..\"), {\n recursive: true,\n force: true,\n });\n });\n it(\"Extended interface properties are checked in object type property mapping\", () => {\n const parentInterface = defineInterface({\n apiName: \"parentInterface\",\n properties: {\n iProperty1: \"string\",\n },\n });\n const childInterface = defineInterface({\n apiName: \"childInterface\",\n properties: {\n iProperty2: \"string\",\n },\n extends: [parentInterface],\n });\n const objectDef = defineObject({\n apiName: \"objectDef\",\n primaryKeyPropertyApiName: \"property1\",\n titlePropertyApiName: \"property1\",\n displayName: \"objectDef\",\n pluralDisplayName: \"objectDefs\",\n properties: {\n \"property1\": { type: \"string\", displayName: \"property1\" },\n \"property2\": { type: \"string\", displayName: \"property2\" },\n },\n implementsInterfaces: [\n {\n implements: childInterface,\n propertyMapping: [\n {\n interfaceProperty: \"com.palantir.iProperty1\",\n mapsTo: \"property1\",\n },\n {\n interfaceProperty: \"com.palantir.iProperty2\",\n mapsTo: \"property2\",\n },\n ],\n },\n ],\n });\n\n expect(dumpOntologyFullMetadata()).toMatchInlineSnapshot(`\n {\n \"blockData\": {\n \"actionTypes\": {},\n \"blockPermissionInformation\": {\n \"actionTypes\": {},\n \"linkTypes\": {},\n \"objectTypes\": {},\n },\n \"interfaceTypes\": {\n \"com.palantir.childInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.childInterface\",\n \"displayMetadata\": {\n \"description\": \"childInterface\",\n \"displayName\": \"childInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [\n \"com.palantir.parentInterface\",\n ],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.iProperty2\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.iProperty2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"iProperty2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n \"com.palantir.parentInterface\": {\n \"interfaceType\": {\n \"apiName\": \"com.palantir.parentInterface\",\n \"displayMetadata\": {\n \"description\": \"parentInterface\",\n \"displayName\": \"parentInterface\",\n \"icon\": undefined,\n },\n \"extendsInterfaces\": [],\n \"links\": [],\n \"properties\": [],\n \"propertiesV2\": {\n \"com.palantir.iProperty1\": {\n \"required\": true,\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.iProperty1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"iProperty1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n \"propertiesV3\": {},\n \"searchable\": true,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n },\n },\n },\n \"linkTypes\": {},\n \"objectTypes\": {\n \"com.palantir.objectDef\": {\n \"datasources\": [\n {\n \"datasource\": {\n \"datasetV2\": {\n \"datasetRid\": \"com.palantir.objectDef\",\n \"propertyMapping\": {\n \"property1\": {\n \"column\": \"property1\",\n \"type\": \"column\",\n },\n \"property2\": {\n \"column\": \"property2\",\n \"type\": \"column\",\n },\n },\n },\n \"type\": \"datasetV2\",\n },\n \"editsConfiguration\": {\n \"onlyAllowPrivilegedEdits\": false,\n },\n \"redacted\": false,\n \"rid\": \"ri.ontology.main.datasource.com.palantir.objectDef\",\n },\n ],\n \"entityMetadata\": {\n \"arePatchesEnabled\": false,\n },\n \"objectType\": {\n \"allImplementsInterfaces\": {},\n \"apiName\": \"com.palantir.objectDef\",\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"objectDef\",\n \"groupDisplayName\": undefined,\n \"icon\": {\n \"blueprint\": {\n \"color\": \"#2D72D2\",\n \"locator\": \"cube\",\n },\n \"type\": \"blueprint\",\n },\n \"pluralDisplayName\": \"objectDefs\",\n \"visibility\": \"NORMAL\",\n },\n \"implementsInterfaces2\": [\n {\n \"interfaceTypeApiName\": \"com.palantir.childInterface\",\n \"linksV2\": {},\n \"properties\": {\n \"com.palantir.iProperty1\": {\n \"propertyTypeRid\": \"property1\",\n },\n \"com.palantir.iProperty2\": {\n \"propertyTypeRid\": \"property2\",\n },\n },\n \"propertiesV2\": {},\n },\n ],\n \"primaryKeys\": [\n \"property1\",\n ],\n \"propertyTypes\": {\n \"property1\": {\n \"apiName\": \"property1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property1\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n \"property2\": {\n \"apiName\": \"property2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"property2\",\n \"visibility\": \"NORMAL\",\n },\n \"indexedForSearch\": true,\n \"inlineAction\": undefined,\n \"ruleSetBinding\": undefined,\n \"sharedPropertyTypeApiName\": undefined,\n \"sharedPropertyTypeRid\": undefined,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"redacted\": false,\n \"status\": {\n \"active\": {},\n \"type\": \"active\",\n },\n \"titlePropertyTypeRid\": \"property1\",\n },\n },\n },\n \"sharedPropertyTypes\": {\n \"com.palantir.iProperty1\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.iProperty1\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"iProperty1\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n \"com.palantir.iProperty2\": {\n \"sharedPropertyType\": {\n \"aliases\": [],\n \"apiName\": \"com.palantir.iProperty2\",\n \"baseFormatter\": undefined,\n \"dataConstraints\": undefined,\n \"displayMetadata\": {\n \"description\": undefined,\n \"displayName\": \"iProperty2\",\n \"visibility\": \"NORMAL\",\n },\n \"gothamMapping\": undefined,\n \"indexedForSearch\": true,\n \"type\": {\n \"string\": {\n \"analyzerOverride\": undefined,\n \"enableAsciiFolding\": undefined,\n \"isLongText\": false,\n \"supportsEfficientLeadingWildcard\": false,\n \"supportsExactMatching\": true,\n },\n \"type\": \"string\",\n },\n \"typeClasses\": [\n {\n \"kind\": \"render_hint\",\n \"name\": \"SELECTABLE\",\n },\n {\n \"kind\": \"render_hint\",\n \"name\": \"SORTABLE\",\n },\n ],\n \"valueType\": undefined,\n },\n },\n },\n },\n \"importedTypes\": {\n \"actionTypes\": [],\n \"interfaceTypes\": [],\n \"linkTypes\": [],\n \"objectTypes\": [],\n \"sharedPropertyTypes\": [],\n },\n }\n `);\n });\n });\n describe(\"Dependencies\", () => {\n it(\"Correctly adds dependencies\", async () => {\n const generatedDir = path.resolve(path.join(\n __dirname,\n \"..\",\n \"generatedNoCheck\",\n \"correctly_adds_dependencies\",\n ));\n await defineOntology(\n \"com.palantir.\",\n () => {\n addDependency(\"com.palantir\", fileURLToPath(import.meta.url));\n defineInterface({\n apiName: \"myInterface\",\n properties: {\n property1: \"string\",\n },\n });\n },\n generatedDir,\n path.join(generatedDir, \"dependencies.json\"),\n );\n\n const packageJson = JSON.parse(\n fs.readFileSync(\n path.join(__dirname, \"..\", \"..\", \"package.json\"),\n \"utf8\",\n ),\n );\n expect(packageJson.version).toBeDefined();\n\n expect(\n fs.readFileSync(path.join(generatedDir, \"dependencies.json\"), \"utf8\"),\n ).toMatchInlineSnapshot(`\n \"{\n \"com.palantir\": \"${packageJson.version}\"\n }\"\n `);\n\n expect(\n fs.readFileSync(path.join(generatedDir, \"index.ts\"), \"utf8\"),\n )\n .toContain(\n `addDependency(\"com.palantir\", new URL(import.meta.url).pathname);`,\n );\n\n fs.rmSync(path.join(generatedDir, \"..\"), {\n recursive: true,\n force: true,\n });\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,EAAE,MAAM,IAAI;AACxB,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AACnC,SAASC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AACzD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SACEC,YAAY,EACZC,iCAAiC,EACjCC,wBAAwB,EACxBC,wBAAwB,EACxBC,iCAAiC,EACjCC,wBAAwB,QACnB,mBAAmB;AAC1B,SAASC,wBAAwB,QAAQ,sBAAsB;AAC/D,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,6BAA6B,QAAQ,oCAAoC;AAClF,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SACEC,cAAc,EACdC,wBAAwB,EACxBC,qBAAqB,QAChB,qBAAqB;AAC5B,SAASC,wBAAwB,QAAQ,gBAAgB;AACzD,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAEEC,sBAAsB,QAEjB,YAAY;AAEnBrB,QAAQ,CAAC,mBAAmB,EAAE,MAAM;EAClCD,UAAU,CAAC,YAAY;IACrB,MAAMgB,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC;EAC1D,CAAC,CAAC;EAEFf,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC3BE,EAAE,CAAC,kDAAkD,EAAE,MAAM;MAC3DD,MAAM,CAAC,MACLkB,eAAe,CAAC;QACdG,OAAO,EAAE,SAAS;QAClBC,WAAW,EAAE,aAAa;QAC1BC,IAAI,EAAE;UACJ,MAAM,EAAE,SAAS;UACjBC,WAAW,EAAE,CAAC;YAAEC,UAAU,EAAE;cAAE,eAAe,EAAE,CAAC,YAAY;YAAE;UAAE,CAAC;QACnE,CAAC;QACDC,OAAO,EAAE;MACX,CAAC,CACH,CAAC,CAACC,kCAAkC,CAClC,0DACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,sEAAsE,EAAE,MAAM;MAC/E,MAAM2B,mBAAmB,GAAGV,eAAe,CAAC;QAC1CG,OAAO,EAAE,uBAAuB;QAChCC,WAAW,EAAE,yBAAyB;QACtCO,WAAW,EAAE,2CAA2C;QACxDN,IAAI,EAAE;UACJ,MAAM,EAAE,QAAQ;UAChBC,WAAW,EAAE,CACX;YACEC,UAAU,EAAE;cACVF,IAAI,EAAE,QAAQ;cACdO,MAAM,EAAE;gBACNC,OAAO,EAAE,CAAC;gBACVC,OAAO,EAAE;cACX;YACF,CAAC;YACDC,cAAc,EAAE;cACdC,OAAO,EAAE;YACX;UACF,CAAC;QAEL,CAAC;QACDR,OAAO,EAAE;MACX,CAAC,CAAC;MAEab,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,mBAAmB;QACzCb,WAAW,EAAE,aAAa;QAC1Bc,iBAAiB,EAAE,cAAc;QACjCf,OAAO,EAAE,YAAY;QACrBgB,yBAAyB,EAAE,mBAAmB;QAC9CC,UAAU,EAAE;UACV,mBAAmB,EAAE;YACnBf,IAAI,EAAE,QAAQ;YACdD,WAAW,EAAE,oBAAoB;YACjCiB,SAAS,EAAEX;UACb;QACF;MACF,CAAC,CAAC;MAEF,MAAMY,QAAQ,GAAGzB,wBAAwB,CAAC,CAAC;MAC3C,MAAM0B,kBAAkB,GACtBD,QAAQ,CAACE,SAAS,CAACC,WAAW,CAAC,yBAAyB,CAAC,CACtDC,UAAU,CAACC,aAAa,CAAC,mBAAmB,CAAC;MAElD7C,MAAM,CAACyC,kBAAkB,CAACF,SAAS,CAAC,CAACO,OAAO,CAAC;QAC3CzB,OAAO,EAAE,uBAAuB;QAChCK,OAAO,EAAE;MACX,CAAC,CAAC;MAEF1B,MAAM,CAACyC,kBAAkB,CAACM,eAAe,CAAC,CAACC,WAAW,CAAC,CAAC;MACxDhD,MAAM,CAACyC,kBAAkB,CAACM,eAAe,EAAEE,uBAAuB,CAAC,CAChEC,YAAY,CAAC,CAAC,CAAC;MAElB,MAAMC,iBAAiB,GAAGV,kBAAkB,CAACM,eAAe,EACxDE,uBAAuB,CAAC,CAAC,CAAC;MAC9BjD,MAAM,CAACmD,iBAAiB,EAAE3B,WAAW,EAAED,IAAI,CAAC,CAAC6B,IAAI,CAAC,QAAQ,CAAC;MAC3DpD,MAAM,CACJ,CAACmD,iBAAiB,EAAE3B,WAAW,EAG5B6B,MAAM,CAACvB,MAAM,CAACC,OACnB,CAAC,CAACqB,IAAI,CAAC,CAAC,CAAC;MACTpD,MAAM,CACJ,CAACmD,iBAAiB,EAAE3B,WAAW,EAG5B6B,MAAM,CAACvB,MAAM,CAACE,OACnB,CAAC,CAACoB,IAAI,CAAC,EAAE,CAAC;MACVpD,MAAM,CAACmD,iBAAiB,EAAElB,cAAc,EAAEC,OAAO,CAAC,CAACkB,IAAI,CACrD,4CACF,CAAC;IACH,CAAC,CAAC;IAEFnD,EAAE,CAAC,mCAAmC,EAAE,MAAM;MAC5CiB,eAAe,CAAC;QACdG,OAAO,EAAE,SAAS;QAClBC,WAAW,EAAE,aAAa;QAC1BC,IAAI,EAAE;UACJ,MAAM,EAAE,SAAS;UACjBC,WAAW,EAAE,CAAC;YAAEC,UAAU,EAAE;cAAE,eAAe,EAAE,CAAC,YAAY;YAAE;UAAE,CAAC;QACnE,CAAC;QACDC,OAAO,EAAE;MACX,CAAC,CAAC;MACF1B,MAAM,CAACgB,qBAAqB,CAAC,CAAC,CAAC,CAACsC,qBAAqB,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IACN,CAAC,CAAC;;IAEF;IACA;IACAxC,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC;EACpD,CAAC,CAAC;EAEFf,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC3BE,EAAE,CAAC,iDAAiD,EAAE,MAAM;MAC1DS,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAM,CAAC,CAAC;MACnCrB,MAAM,CAAC,MAAM;QACXU,eAAe,CAAC;UAAEW,OAAO,EAAE;QAAM,CAAC,CAAC;MACrC,CAAC,CAAC,CAACM,kCAAkC,CACnC,sEACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,iCAAiC,EAAE,MAAM;MAC1C,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAM,CAAC,CAAC;MAClDrB,MAAM,CAACuD,MAAM,CAACC,eAAe,CAAClC,WAAW,CAAC,CAAC8B,IAAI,CAAC,KAAK,CAAC;IACxD,CAAC,CAAC;IAEFnD,EAAE,CAAC,qCAAqC,EAAE,MAAM;MAC9C,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;QAAEW,OAAO,EAAE,KAAK;QAAEC,WAAW,EAAE;MAAI,CAAC,CAAC;MACpEtB,MAAM,CAACuD,MAAM,CAACC,eAAe,CAAC3B,WAAW,CAAC,CAACuB,IAAI,CAAC,GAAG,CAAC;IACtD,CAAC,CAAC;IAEFnD,EAAE,CAAC,gDAAgD,EAAE,MAAM;MACzD,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAM,CAAC,CAAC;MAClDrB,MAAM,CAACuD,MAAM,CAACC,eAAe,CAAC3B,WAAW,CAAC,CAACuB,IAAI,CAAC,KAAK,CAAC;IACxD,CAAC,CAAC;IAEFrD,QAAQ,CAAC,WAAW,EAAE,MAAM;MAC1BE,EAAE,CAAC,mBAAmB,EAAE,MAAM;QAC5BS,eAAe,CAAC;UACdW,OAAO,EAAE,KAAK;UACdiB,UAAU,EAAE;YACVmB,GAAG,EAAE;UACP;QACF,CAAC,CAAC;QAEFzD,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;MACJ,CAAC,CAAC;MAEFrD,EAAE,CAAC,gCAAgC,EAAE,MAAM;QACzCgB,wBAAwB,CAAC;UACvBI,OAAO,EAAE,KAAK;UACdE,IAAI,EAAE;QACR,CAAC,CAAC;QAEFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;QAEFtD,MAAM,CAAC,MAAM;UACXU,eAAe,CAAC;YACdW,OAAO,EAAE,KAAK;YACdiB,UAAU,EAAE;cACVmB,GAAG,EAAE;YACP;UACF,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC9B,kCAAkC,CACnC,iFACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF1B,EAAE,CAAC,uDAAuD,EAAE,MAAM;MAChE,MAAMyD,eAAe,GAAGhD,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1BiB,UAAU,EAAE;UACVqB,SAAS,EAAE;QACb;MACF,CAAC,CAAC;MACqBjD,eAAe,CAAC;QACrCW,OAAO,EAAE,gBAAgB;QACzBiB,UAAU,EAAE;UACVsB,SAAS,EAAE;QACb,CAAC;QACDC,OAAO,EAAE,CAACH,eAAe;MAC3B,CAAC,CAAC;MAEF1D,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,8BAA8B,EAAE,MAAM;MACfS,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1BiB,UAAU,EAAE;UACVqB,SAAS,EAAE;YAAEG,QAAQ,EAAE,KAAK;YAAEC,kBAAkB,EAAE;UAAS;QAC7D;MACF,CAAC,CAAC;MAEF/D,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,iDAAiD,EAAE,MAAM;MAC1D,MAAMyD,eAAe,GAAGhD,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1BiB,UAAU,EAAE;UACVqB,SAAS,EAAE;QACb;MACF,CAAC,CAAC;MACqBjD,eAAe,CAAC;QACrCW,OAAO,EAAE,gBAAgB;QACzBiB,UAAU,EAAE;UACVsB,SAAS,EAAE;QACb,CAAC;QACDC,OAAO,EAAEH;MACX,CAAC,CAAC;MAEF1D,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,gCAAgC,EAAE,MAAM;MACjBS,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1B2C,UAAU,EAAE;MACd,CAAC,CAAC;MAEFhE,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvD,QAAQ,CAAC,MAAM,EAAE,MAAM;IACrB,IAAIkE,CAAgB;IACpB,IAAIC,CAAgB;IAEpBpE,UAAU,CAAC,MAAM;MACfmE,CAAC,GAAGvD,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAI,CAAC,CAAC;MACrC6C,CAAC,GAAGxD,eAAe,CAAC;QAAEW,OAAO,EAAE;MAAI,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFpB,EAAE,CAAC,mBAAmB,EAAE,MAAM;MAC5BD,MAAM,CAACiE,CAAC,CAAC,CAACE,GAAG,CAACC,aAAa,CAAC,CAAC;MAC7BzD,6BAA6B,CAAC;QAC5B0D,IAAI,EAAEJ,CAAC;QACPK,KAAK,EAAEJ,CAAC;QACR7C,OAAO,EAAE;MACX,CAAC,CAAC;MAEFrB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,iBAAiB,EAAE,MAAM;MAC1BU,6BAA6B,CAAC;QAC5B0D,IAAI,EAAEJ,CAAC;QACPM,MAAM,EAAEL,CAAC;QACT7C,OAAO,EAAE;MACX,CAAC,CAAC;MAEFrB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvD,QAAQ,CAAC,MAAM,EAAE,MAAM;IACrBE,EAAE,CAAC,2CAA2C,EAAE,MAAM;MACpDgB,wBAAwB,CAAC;QACvBI,OAAO,EAAE,KAAK;QACdE,IAAI,EAAE;MACR,CAAC,CAAC;MAEFvB,MAAM,CAAC,MAAM;QACXiB,wBAAwB,CAAC;UACvBI,OAAO,EAAE,KAAK;UACdE,IAAI,EAAE;QACR,CAAC,CAAC;MACJ,CAAC,CAAC,CAACI,kCAAkC,CACnC,iFACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF1B,EAAE,CAAC,uBAAuB,EAAE,MAAM;IAChC,MAAMuE,MAAM,GAAGvD,wBAAwB,CAAC;MACtCI,OAAO,EAAE,QAAQ;MACjBE,IAAI,EAAE;IACR,CAAC,CAAC;IAEmBb,eAAe,CAAC;MACnCW,OAAO,EAAE,cAAc;MACvBC,WAAW,EAAE,eAAe;MAC5BgB,UAAU,EAAE;QACVkC;MACF,CAAC;MACDC,IAAI,EAAE;QAAEC,KAAK,EAAE,QAAQ;QAAEC,OAAO,EAAE;MAAW;IAC/C,CAAC,CAAC;IAEF3E,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACJ,CAAC,CAAC;EAEFrD,EAAE,CAAC,+CAA+C,EAAE,MAAM;IACzCgB,wBAAwB,CAAC;MACtCI,OAAO,EAAE,QAAQ;MACjBE,IAAI,EAAE;QACJA,IAAI,EAAE,QAAQ;QACdqD,gBAAgB,EAAE;UAChB,gBAAgB,EAAE,SAAS;UAC3B,iBAAiB,EAAE;YACjBC,SAAS,EAAE,MAAM;YACjBrB,eAAe,EAAE;cACflC,WAAW,EAAE,kBAAkB;cAC/BO,WAAW,EAAEiD;YACf;UACF;QACF;MACF;IACF,CAAC,CAAC;IAEF9E,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;EACN,CAAC,CAAC;EAEFrD,EAAE,CAAC,mCAAmC,EAAE,MAAM;IAC5C,MAAM8E,GAAG,GAAG9D,wBAAwB,CAAC;MACnCI,OAAO,EAAE,KAAK;MACdE,IAAI,EAAE;QACJA,IAAI,EAAE,QAAQ;QACdyD,UAAU,EAAE,IAAI;QAChBC,gCAAgC,EAAE,IAAI;QACtCC,qBAAqB,EAAE;MACzB;IACF,CAAC,CAAC;IAEFxE,eAAe,CAAC;MACdW,OAAO,EAAE,WAAW;MACpBiB,UAAU,EAAE;QAAEmB,GAAG,EAAEsB;MAAI;IACzB,CAAC,CAAC;IAEF/E,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACJ,CAAC,CAAC;EAEFrD,EAAE,CAAC,qCAAqC,EAAE,MAAM;IAC9C,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;MAAEW,OAAO,EAAE;IAAM,CAAC,CAAC;IAClDrB,MAAM,CAACuD,MAAM,CAAC4B,MAAM,CAAC,CAACrC,OAAO,CAAC;MAAEvB,IAAI,EAAE,QAAQ;MAAE6D,MAAM,EAAE,CAAC;IAAE,CAAC,CAAC;EAC/D,CAAC,CAAC;EAEFnF,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAK1D,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;MAC7BW,OAAO,EAAE,KAAK;MACd8D,MAAM,EAAE;QAAE5D,IAAI,EAAE;MAAe;IACjC,CAAC,CAAC;IACFvB,MAAM,CAACuD,MAAM,CAAC4B,MAAM,CAAC,CAACrC,OAAO,CARF;MACzBvB,IAAI,EAAE,cAAc;MACpB8D,YAAY,EAAE,CAAC;IACjB,CAKgD,CAAC;EACnD,CAAC,CAAC;EAEFpF,EAAE,CAAC,+CAA+C,EAAE,MAAM;IAQxD,MAAMsD,MAAM,GAAG7C,eAAe,CAAC;MAC7BW,OAAO,EAAE,KAAK;MACd8D,MAAM,EAAE;QAAE5D,IAAI,EAAE,YAAY;QAAEW,OAAO,EAAE,KAAK;QAAEoD,QAAQ,EAAE;MAAM;IAChE,CAAC,CAAC;IACFtF,MAAM,CAACuD,MAAM,CAAC4B,MAAM,CAAC,CAACrC,OAAO,CAXJ;MACvBvB,IAAI,EAAE,YAAY;MAClBgE,UAAU,EAAE;QACVrD,OAAO,EAAE,KAAK;QACdoD,QAAQ,EAAE;MACZ;IACF,CAK8C,CAAC;EACjD,CAAC,CAAC;EAEFvF,QAAQ,CAAC,SAAS,EAAE,MAAM;IACxBE,EAAE,CAAC,gDAAgD,EAAE,MAAM;MACzD,MAAM8E,GAAG,GAAG9D,wBAAwB,CAAC;QACnCI,OAAO,EAAE,KAAK;QACdE,IAAI,EAAE;MACR,CAAC,CAAC;MAEF,MAAMiE,MAAM,GAAG9E,eAAe,CAAC;QAC7BW,OAAO,EAAE,WAAW;QACpBiB,UAAU,EAAE;UAAEmB,GAAG,EAAEsB;QAAI;MACzB,CAAC,CAAC;MAEF/E,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,MAAM;UAC5Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE;QAC1C,CAAC,CAAC;MACJ,CAAC,CAAC,CAACI,kCAAkC,CACnC,6EACF,CAAC;MAED3B,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,MAAM;UACjCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE;QAC1C,CAAC,CAAC;MACJ,CAAC,CAAC,CAACI,kCAAkC,CACnC,mFACF,CAAC;MAED3B,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE,CAAC;UACzCkE,oBAAoB,EAAE,CAAC;YACrBC,UAAU,EAAEF,MAAM;YAClBG,eAAe,EAAE,CAAC;cAChBC,iBAAiB,EAAE,kBAAkB;cACrCC,MAAM,EAAE;YACV,CAAC;UACH,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,CAAC,CAAClE,kCAAkC,CACnC,4IACF,CAAC;MAED3B,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE,CAAC;UACzCkE,oBAAoB,EAAE,CAAC;YACrBC,UAAU,EAAEF,MAAM;YAClBG,eAAe,EAAE,CAAC;cAChBC,iBAAiB,EAAE,mBAAmB;cACtCC,MAAM,EAAE;YACV,CAAC,EAAE;cACDD,iBAAiB,EAAE,kBAAkB;cACrCC,MAAM,EAAE;YACV,CAAC;UACH,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,CAAC,CAAClE,kCAAkC,CACnC,wIACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,0BAA0B,EAAE,MAAM;MACnC,MAAM8E,GAAG,GAAG9D,wBAAwB,CAAC;QACnCI,OAAO,EAAE,KAAK;QACdE,IAAI,EAAE;MACR,CAAC,CAAC;MAEF,MAAMiE,MAAM,GAAG9E,eAAe,CAAC;QAC7BW,OAAO,EAAE,WAAW;QACpBiB,UAAU,EAAE;UAAEmB,GAAG,EAAEsB;QAAI;MACzB,CAAC,CAAC;MAEalE,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,KAAK,EAAE;YAAEf,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAM,CAAC;UAC7C,WAAW,EAAE;YACXC,IAAI,EAAE,QAAQ;YACduE,KAAK,EAAE,IAAI;YACXxE,WAAW,EAAE;UACf,CAAC;UACD,UAAU,EAAE;YACVC,IAAI,EAAE;cACJA,IAAI,EAAE,QAAQ;cACdqD,gBAAgB,EAAE;gBAAEmB,GAAG,EAAE,QAAQ;gBAAEC,GAAG,EAAE;cAAS;YACnD,CAAC;YACD1E,WAAW,EAAE;UACf;QACF,CAAC;QACDmE,oBAAoB,EAAE,CAAC;UACrBC,UAAU,EAAEF,MAAM;UAClBG,eAAe,EAAE,CAAC;YAChBC,iBAAiB,EAAE,KAAK;YACxBC,MAAM,EAAE;UACV,CAAC;QACH,CAAC;MACH,CAAC,CAAC;MAEF7F,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IACFrD,EAAE,CAAC,wCAAwC,EAAE,MAAM;MACjD,MAAMgG,MAAM,GAAGpF,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UAAE,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE;MAC1C,CAAC,CAAC;MAEF,MAAM2E,WAAW,GAAGrF,YAAY,CAAC;QAC/BsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,MAAM;QACnBc,iBAAiB,EAAE,MAAM;QACzBf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UAAE,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAAE;MACtE,CAAC,CAAC;MAEFX,UAAU,CAAC;QACTS,OAAO,EAAE,WAAW;QACpB8E,GAAG,EAAE;UACHF,MAAM,EAAEA,MAAM;UACdG,QAAQ,EAAE;YACR/E,OAAO,EAAE,QAAQ;YACjBC,WAAW,EAAE,KAAK;YAClBc,iBAAiB,EAAE;UACrB;QACF,CAAC;QACDmC,MAAM,EAAE;UACN0B,MAAM,EAAEC,WAAW;UACnBE,QAAQ,EAAE;YACR9E,WAAW,EAAE,MAAM;YACnBc,iBAAiB,EAAE,QAAQ;YAC3Bf,OAAO,EAAE;UACX;QACF,CAAC;QACDgF,sBAAsB,EAAE;MAC1B,CAAC,CAAC;MAEFrG,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,yCAAyC,EAAE,MAAM;MAClD,MAAMgG,MAAM,GAAGpF,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UAAE,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE;MAC1C,CAAC,CAAC;MAEF,MAAM2E,WAAW,GAAGrF,YAAY,CAAC;QAC/BsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,MAAM;QACnBc,iBAAiB,EAAE,MAAM;QACzBf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UAAE,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAAE;MACtE,CAAC,CAAC;MAEFX,UAAU,CAAC;QACTS,OAAO,EAAE,WAAW;QACpBiF,IAAI,EAAE;UACJL,MAAM,EAAEA,MAAM;UACdG,QAAQ,EAAE;YACR9E,WAAW,EAAE,KAAK;YAClBc,iBAAiB,EAAE,MAAM;YACzBf,OAAO,EAAE;UACX;QACF,CAAC;QACDkD,MAAM,EAAE;UACN0B,MAAM,EAAEC,WAAW;UACnBE,QAAQ,EAAE;YACR9E,WAAW,EAAE,MAAM;YACnBc,iBAAiB,EAAE,QAAQ;YAC3Bf,OAAO,EAAE;UACX;QACF;MACF,CAAC,CAAC;MACFrB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,+CAA+C,EAAE,MAAM;MACxD,MAAMgG,MAAM,GAAGpF,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UAAE,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE;MAC1C,CAAC,CAAC;MAEF,MAAM2E,WAAW,GAAGrF,YAAY,CAAC;QAC/BsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,MAAM;QACnBc,iBAAiB,EAAE,MAAM;QACzBf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UAAE,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAAE;MACtE,CAAC,CAAC;MAEFX,UAAU,CAAC;QACTS,OAAO,EAAE,WAAW;QACpB8E,GAAG,EAAE;UACHF,MAAM,EAAEA,MAAM;UACdG,QAAQ,EAAE;YACR/E,OAAO,EAAE;UACX;QACF,CAAC;QACDkD,MAAM,EAAE;UACN0B,MAAM,EAAEC,WAAW;UACnBE,QAAQ,EAAE;YACR/E,OAAO,EAAE;UACX;QACF,CAAC;QACDgF,sBAAsB,EAAE;MAC1B,CAAC,CAAC;MAEFrG,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,sDAAsD,EAAE,MAAM;MACnCY,YAAY,CAAC;QACvCsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,qBAAqB;QAClCc,iBAAiB,EAAE,qBAAqB;QACxCf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UAAE,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE,CAAC;QACzCgF,UAAU,EAAE;UAAEhF,IAAI,EAAE;QAAU;MAChC,CAAC,CAAC;MAEoCV,YAAY,CAAC;QACjDsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,+BAA+B;QAC5Cc,iBAAiB,EAAE,+BAA+B;QAClDf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UAAE,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAAE,CAAC;QACrEgF,UAAU,EAAE;UAAEhF,IAAI,EAAE;QAAS;MAC/B,CAAC,CAAC;MAEsCV,YAAY,CAAC;QACnDsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,iCAAiC;QAC9Cc,iBAAiB,EAAE,iCAAiC;QACpDf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE,CAAC;QAC1CgF,UAAU,EAAE;UAAEhF,IAAI,EAAE,QAAQ;UAAEiF,eAAe,EAAE;QAAO;MACxD,CAAC,CAAC;MAEFxG,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC2B,SAAS,CAAC,CAACY,qBAAqB,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,kDAAkD,EAAE,MAAM;MAC5CY,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS;QAC1B,CAAC;QACDgF,UAAU,EAAE;UAAEhF,IAAI,EAAE;QAAiB;MACvC,CAAC,CAAC;MACFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,2CAA2C,EAAE,MAAM;MACrCY,YAAY,CAAC;QAC1BsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,KAAK;QAClBc,iBAAiB,EAAE,KAAK;QACxBf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UACV,KAAK,EAAE;YACLf,IAAI,EAAE,QAAQ;YACdkF,QAAQ,EAAE;UACZ,CAAC;UACD,MAAM,EAAE;YACNlF,IAAI,EAAE;UACR;QACF;MACF,CAAC,CAAC;MACFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,4CAA4C,EAAE,MAAM;MACrDD,MAAM,CAAC,MAAM;QACXa,YAAY,CAAC;UACXsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,KAAK;UAClBc,iBAAiB,EAAE,KAAK;UACxBf,OAAO,EAAE,KAAK;UACdgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE,QAAQ;cAAEkF,QAAQ,EAAE;YAAK;UAAE;QAC1D,CAAC,CAAC;MACJ,CAAC,CAAC,CAAC9E,kCAAkC,CACnC,uFACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,2DAA2D,EAAE,MAAM;MACpED,MAAM,CAAC,MACLa,YAAY,CAAC;QACXsB,oBAAoB,EAAE,MAAM;QAC5Bb,WAAW,EAAE,iCAAiC;QAC9Cc,iBAAiB,EAAE,iCAAiC;QACpDf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,MAAM;QACjCC,UAAU,EAAE;UAAE,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAS;QAAE,CAAC;QAC1CgF,UAAU,EAAE;UACVhF,IAAI,EAAE,QAAQ;UACdiF,eAAe,EAAE;QACnB;MACF,CAAC,CACH,CAAC,CAAC7E,kCAAkC,CAClC,oIACF,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,iDAAiD,EAAE,MAAM;MACpCY,YAAY,CAAC;QACjCsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,eAAe;QAC5Bc,iBAAiB,EAAE,eAAe;QAClCf,OAAO,EAAE,MAAM;QACfgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,MAAM,EAAE;YAAEf,IAAI,EAAE;UAAiB,CAAC;UAClC,KAAK,EAAE;YAAEA,IAAI,EAAE;UAAS;QAC1B,CAAC;QACDgF,UAAU,EAAE;UAAEhF,IAAI,EAAE;QAAS;MAC/B,CAAC,CAAC;MAEFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvD,QAAQ,CAAC,qBAAqB,EAAE,MAAM;IACpCE,EAAE,CAAC,uEAAuE,EAAE,MAAM;MACpEY,YAAY,CAAC;QACvBsB,oBAAoB,EAAE,OAAO;QAC7Bb,WAAW,EAAE,UAAU;QACvBc,iBAAiB,EAAE,WAAW;QAC9Bf,OAAO,EAAE,UAAU;QACnBgB,yBAAyB,EAAE,OAAO;QAClCC,UAAU,EAAE;UACV,OAAO,EAAE;YACPf,IAAI,EAAE,QAAQ;YACdD,WAAW,EAAE;UACf,CAAC;UACD,gBAAgB,EAAE;YAChBC,IAAI,EAAE;cACJA,IAAI,EAAE,SAAS;cACfmF,WAAW,EAAE,MAAM;cACnBC,qBAAqB,EAAE;YACzB,CAAC;YACDrF,WAAW,EAAE;UACf;QACF;MACF,CAAC,CAAC;MAEF,MAAMkB,QAAQ,GAAGzB,wBAAwB,CAAC,CAAC;MAC3C,MAAM6F,wBAAwB,GAAGpE,QAAQ,CAACE,SAAS,CAChDC,WAAW,CAAC,uBAAuB,CAAC,CAACkE,WAAW,CAAC,CAAC,CAAC,CAACC,YAAY,EAC/DF,wBAAyB;MAC7B5G,MAAM,CAAC4G,wBAAwB,CAACG,gBAAgB,CAAC,CAACjE,OAAO,CACvD,qBACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/C,QAAQ,CAAC,SAAS,EAAE,MAAM;IACxBE,EAAE,CAAC,wCAAwC,EAAE,MAAM;MAC3BE,YAAY,CAAC;QACjCkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,kBAAkB;UACxB0F,gBAAgB,EAAE;YAChBC,gBAAgB,EAAE,KAAK;YACvBC,mBAAmB,EAAE,QAAQ;YAC7BC,oBAAoB,EAAE,CAAC;UACzB;QACF,CAAC,CAAC;QACFC,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,SAAS;UACfgG,UAAU,EAAE;YAAEzD,QAAQ,EAAE,IAAI;YAAE0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAU;UAAE;QACnE,CAAC;MACH,CAAC,CAAC;MAEFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IACFrD,EAAE,CAAC,mEAAmE,EAAE,MAAM;MAC5E,MAAMwH,yBAAyB,GAAGxG,wBAAwB,CAAC;QACzDI,OAAO,EAAE,WAAW;QACpBE,IAAI,EAAE;UACJA,IAAI,EAAE,QAAQ;UACdqD,gBAAgB,EAAE;YAChB8C,cAAc,EAAE;UAClB;QACF;MACF,CAAC,CAAC;MACF,MAAMC,KAAK,GAAG1G,wBAAwB,CAAC;QACrCI,OAAO,EAAE,OAAO;QAChBE,IAAI,EAAE;MACR,CAAC,CAAC;MACF,MAAMqG,gBAAgB,GAAGlH,eAAe,CAAC;QACvCW,OAAO,EAAE,kBAAkB;QAC3BiB,UAAU,EAAE;UACVqF,KAAK;UACLhE,SAAS,EAAE,QAAQ;UACnBC,SAAS,EAAE6D;QACb;MACF,CAAC,CAAC;MAEF,MAAMI,iBAAiB,GAAGhH,YAAY,CAAC;QACrCsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,mBAAmB;QAChCc,iBAAiB,EAAE,oBAAoB;QACvCf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UACzB,WAAW,EAAE;YAAEA,IAAI,EAAE;UAAS,CAAC;UAC/B,WAAW,EAAE;YACXA,IAAI,EAAE;cACJA,IAAI,EAAE,QAAQ;cACdqD,gBAAgB,EAAE;gBAAE8C,cAAc,EAAE;cAAS;YAC/C;UACF;QACF,CAAC;QACDjC,oBAAoB,EAAE,CAAC;UACrBC,UAAU,EAAEkC,gBAAgB;UAC5BjC,eAAe,EAAE,CACf;YACEC,iBAAiB,EAAE,oBAAoB;YACvCC,MAAM,EAAE;UACV,CAAC,EACD;YACED,iBAAiB,EAAE,wBAAwB;YAC3CC,MAAM,EAAE;UACV,CAAC,EACD;YACED,iBAAiB,EAAE,wBAAwB;YAC3CC,MAAM,EAAE;UACV,CAAC;QAEL,CAAC;MACH,CAAC,CAAC;MAEiCzF,iCAAiC,CAClEwH,gBAAgB,EAChBC,iBACF,CAAC;MAEoBtH,iCAAiC,CACpDqH,gBAAgB,EAChBC,iBACF,CAAC;MAED7H,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,uCAAuC,EAAE,MAAM;MAC1BE,YAAY,CAAC;QACjCkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,yBAAyB;UAC/BuG,uBAAuB,EAAE;YACvBC,cAAc,EAAE,yBAAyB;YACzCC,cAAc,EAAE;cACd,KAAK,EAAE;gBACLzG,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf;YACF,CAAC;YACDC,iBAAiB,EAAE,CAAC;UACtB;QACF,CAAC,CAAC;QACFb,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,SAAS;UACfgG,UAAU,EAAE;YAAEzD,QAAQ,EAAE,IAAI;YAAE0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAU;UAAE;QACnE,CAAC;MACH,CAAC,CAAC;MAEFvB,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,uDAAuD,EAAE,MAAM;MAC1CE,YAAY,CAAC;QACjCkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,kBAAkB;UACxB4G,gBAAgB,EAAE;YAChBJ,cAAc,EAAE,yBAAyB;YACzCC,cAAc,EAAE;cACd,KAAK,EAAE;gBACLzG,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf;YACF,CAAC;YACDC,iBAAiB,EAAE,CAAC;UACtB;QACF,CAAC,CAAC;QACFb,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,QAAQ;UACZhG,WAAW,EAAE,QAAQ;UACrBC,IAAI,EAAE,SAAS;UACfgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAU,CAAC;YAClC6G,iBAAiB,EAAE,UAAU;YAC7BC,oBAAoB,EAAE,CACpB;cACE9G,IAAI,EAAE,YAAY;cAClB+G,SAAS,EAAE;gBACT/G,IAAI,EAAE,OAAO;gBACbgH,IAAI,EAAE;cACR;YACF,CAAC;UAEL;QACF,CAAC,EAAE;UACDjB,EAAE,EAAE,yBAAyB;UAC7BhG,WAAW,EAAE,yBAAyB;UACtCC,IAAI,EAAE,qBAAqB;UAC3BgG,UAAU,EAAE;YACVzD,QAAQ,EAAE,IAAI;YACd0D,aAAa,EAAE;cAAEjG,IAAI,EAAE,qBAAqB;cAAEiH,cAAc,EAAE;YAAG,CAAC;YAClEJ,iBAAiB,EAAE;UACrB;QACF,CAAC;MACH,CAAC,CAAC;MAEFpI,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,8CAA8C,EAAE,MAAM;MACvD,MAAM4H,iBAAiB,GAAGhH,YAAY,CAAC;QACrCsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,mBAAmB;QAChCc,iBAAiB,EAAE,oBAAoB;QACvCf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,KAAK;QAChCC,UAAU,EAAE;UACV,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UACzB,YAAY,EAAE;YACZA,IAAI,EAAE;cACJA,IAAI,EAAE,QAAQ;cACdqD,gBAAgB,EAAE;gBAAE8C,cAAc,EAAE;cAAS;YAC/C;UACF;QACF;MACF,CAAC,CAAC;MAE6BrH,wBAAwB,CACrD;QACEuC,UAAU,EAAEiF;MACd,CACF,CAAC;MAC8BrH,wBAAwB,CACrD;QACEoC,UAAU,EAAEiF;MACd,CACF,CAAC;MAC8BvH,wBAAwB,CACrD;QACEsC,UAAU,EAAEiF;MACd,CACF,CAAC;MAED7H,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,qDAAqD,EAAE,MAAM;MAC9D,MAAM4H,iBAAiB,GAAGhH,YAAY,CAAC;QACrCsB,oBAAoB,EAAE,KAAK;QAC3Bb,WAAW,EAAE,mBAAmB;QAChCc,iBAAiB,EAAE,oBAAoB;QACvCf,OAAO,EAAE,KAAK;QACdgB,yBAAyB,EAAE,SAAS;QACpCC,UAAU,EAAE;UACV,KAAK,EAAE;YAAEf,IAAI,EAAE;UAAS,CAAC;UACzB,MAAM,EAAE;YAAEA,IAAI,EAAE;UAAS,CAAC;UAC1B,MAAM,EAAE;YAAEA,IAAI,EAAE;UAAS,CAAC;UAC1B,SAAS,EAAE;YAAEA,IAAI,EAAE;UAAS;QAC9B;MACF,CAAC,CAAC;MAE6BlB,wBAAwB,CACrD;QACEuC,UAAU,EAAEiF,iBAAiB;QAC7BY,qBAAqB,EAAE;UACrBH,SAAS,EAAE;YACT/G,IAAI,EAAE,OAAO;YACbgH,IAAI,EAAE;UACR;QACF,CAAC;QACDG,yBAAyB,EAAE;UACzB,MAAM,EAAE;YACN5E,QAAQ,EAAE,KAAK;YACfuE,oBAAoB,EAAE,CACpB;cACE9G,IAAI,EAAE,UAAU;cAChB+G,SAAS,EAAE;gBACT/G,IAAI,EAAE,KAAK;gBACXoH,UAAU,EAAE,CACV;kBACEpH,IAAI,EAAE,OAAO;kBACbgH,IAAI,EAAE;gBACR,CAAC,EACD;kBACEhH,IAAI,EAAE,WAAW;kBACjB0G,WAAW,EAAE,KAAK;kBAClBW,OAAO,EAAE;oBACPrH,IAAI,EAAE,aAAa;oBACnBsH,WAAW,EAAE;sBACXtH,IAAI,EAAE,QAAQ;sBACd8B,MAAM,EAAE;oBACV;kBACF;gBACF,CAAC;cAEL;YACF,CAAC;UAEL;QACF,CAAC;QACDyF,kBAAkB,EAAE,CAAC,MAAM;MAC7B,CACF,CAAC;MAE8BtI,wBAAwB,CACrD;QACEoC,UAAU,EAAEiF,iBAAiB;QAC7BY,qBAAqB,EAAE;UACrBH,SAAS,EAAE;YACT/G,IAAI,EAAE,OAAO;YACbgH,IAAI,EAAE;UACR;QACF,CAAC;QACDG,yBAAyB,EAAE;UACzB,MAAM,EAAE;YACN5E,QAAQ,EAAE,KAAK;YACfuE,oBAAoB,EAAE,CACpB;cACE9G,IAAI,EAAE,UAAU;cAChB+G,SAAS,EAAE;gBACT/G,IAAI,EAAE,KAAK;gBACXoH,UAAU,EAAE,CACV;kBACEpH,IAAI,EAAE,OAAO;kBACbgH,IAAI,EAAE;gBACR,CAAC,EACD;kBACEhH,IAAI,EAAE,WAAW;kBACjB0G,WAAW,EAAE,KAAK;kBAClBW,OAAO,EAAE;oBACPrH,IAAI,EAAE,aAAa;oBACnBsH,WAAW,EAAE;sBACXtH,IAAI,EAAE,QAAQ;sBACd8B,MAAM,EAAE;oBACV;kBACF;gBACF,CAAC;cAEL;YACF,CAAC;UAEL;QACF,CAAC;QACDyF,kBAAkB,EAAE,CAAC,MAAM;MAC7B,CACF,CAAC;MAED9I,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,oDAAoD,EAAE,MAAM;MACxCY,YAAY,CAAC;QAChCQ,OAAO,EAAE,cAAc;QACvBC,WAAW,EAAE,aAAa;QAC1BO,WAAW,EAAE,2BAA2B;QACxCQ,yBAAyB,EAAE,IAAI;QAC/BD,iBAAiB,EAAE,OAAO;QAC1BD,oBAAoB,EAAE,MAAM;QAC5BG,UAAU,EAAE;UACV,MAAM,EAAE;YACNf,IAAI,EAAE,QAAQ;YACdM,WAAW,EAAE;UACf,CAAC;UACD,IAAI,EAAE;YAAEN,IAAI,EAAE,QAAQ;YAAEM,WAAW,EAAE;UAA4B;QACnE;MACF,CAAC,CAAC;MACF7B,MAAM,CAAC,MACLG,YAAY,CAAC;QACXkB,OAAO,EAAE,KAAK;QACdC,WAAW,EAAE,eAAe;QAC5B6D,MAAM,EAAE,QAAQ;QAChB6B,KAAK,EAAE,CAAC;UACNzF,IAAI,EAAE,kBAAkB;UACxB4G,gBAAgB,EAAE;YAChBJ,cAAc,EAAE,cAAc;YAC9BC,cAAc,EAAE;cACd,MAAM,EAAE;gBACNzG,IAAI,EAAE,aAAa;gBACnB0G,WAAW,EAAE;cACf;YACF,CAAC;YACDC,iBAAiB,EAAE,CAAC;UACtB;QACF,CAAC,CAAC;QACFb,UAAU,EAAE,CAAC;UACXC,EAAE,EAAE,MAAM;UACVhG,WAAW,EAAE,MAAM;UACnBC,IAAI,EAAE,QAAQ;UACdgG,UAAU,EAAE;YAAEzD,QAAQ,EAAE,IAAI;YAAE0D,aAAa,EAAE;cAAEjG,IAAI,EAAE;YAAO;UAAE;QAChE,CAAC;MACH,CAAC,CACH,CAAC,CAACwH,YAAY,CACZ,4EACF,CAAC;IACH,CAAC,CAAC;IAEF9I,EAAE,CAAC,sEAAsE,EAAE,MAAM;MAC/E,MAAM2H,gBAAgB,GAAGlH,eAAe,CAAC;QACvCW,OAAO,EAAE,kBAAkB;QAC3BiB,UAAU,EAAE;UACVqB,SAAS,EAAE;QACb;MACF,CAAC,CAAC;MACmBvD,iCAAiC,CAACwH,gBAAgB,CAAC;MACnDrH,iCAAiC,CAACqH,gBAAgB,CAAC;MAExE5H,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,qDAAqD,EAAE,MAAM;MAC9D,MAAM+I,YAAY,GAAGnI,YAAY,CAAC;QAChCQ,OAAO,EAAE,cAAc;QACvBC,WAAW,EAAE,aAAa;QAC1BO,WAAW,EAAE,2BAA2B;QACxCQ,yBAAyB,EAAE,IAAI;QAC/BD,iBAAiB,EAAE,OAAO;QAC1BD,oBAAoB,EAAE,MAAM;QAC5BG,UAAU,EAAE;UACV,MAAM,EAAE;YACNf,IAAI,EAAE,QAAQ;YACdM,WAAW,EAAE;UACf,CAAC;UACD,IAAI,EAAE;YACJN,IAAI,EAAE,QAAQ;YACdD,WAAW,EAAE,IAAI;YACjBO,WAAW,EAAE;UACf;QACF;MACF,CAAC,CAAC;MACmBxB,wBAAwB,CAAC;QAC5CuC,UAAU,EAAEoG,YAAY;QACxBP,qBAAqB,EAAE;UACrBH,SAAS,EAAE;YACT/G,IAAI,EAAE,OAAO;YACbgH,IAAI,EAAE;UACR;QACF;MACF,CAAC,CAAC;MAEFvI,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,sDAAsD,EAAE,MAAM;MAC/D,MAAM+I,YAAY,GAAGnI,YAAY,CAAC;QAChCQ,OAAO,EAAE,cAAc;QACvBC,WAAW,EAAE,aAAa;QAC1BO,WAAW,EAAE,2BAA2B;QACxCQ,yBAAyB,EAAE,IAAI;QAC/BD,iBAAiB,EAAE,OAAO;QAC1BD,oBAAoB,EAAE,MAAM;QAC5BG,UAAU,EAAE;UACV,MAAM,EAAE;YACNf,IAAI,EAAE,QAAQ;YACdM,WAAW,EAAE;UACf,CAAC;UACD,IAAI,EAAE;YACJN,IAAI,EAAE,QAAQ;YACdD,WAAW,EAAE,IAAI;YACjBO,WAAW,EAAE;UACf;QACF;MACF,CAAC,CAAC;MACmBxB,wBAAwB,CAAC;QAC5CuC,UAAU,EAAEoG,YAAY;QACxBP,qBAAqB,EAAE;UACrBjF,eAAe,EAAE;YACfvB,cAAc,EACZ,qFAAqF;YACvFgH,WAAW,EAAE;UACf,CAAC;UACDX,SAAS,EAAE;YACT/G,IAAI,EAAE,YAAY;YAClB2H,UAAU,EAAE;cACVC,QAAQ,EAAE,YAAY;cACtBC,IAAI,EAAE;gBACJ7H,IAAI,EAAE,cAAc;gBACpB8H,YAAY,EAAE;kBACZC,MAAM,EAAE;oBACN/H,IAAI,EAAE,aAAa;oBACnBgI,WAAW,EAAE,CAAC;kBAChB,CAAC;kBACDC,aAAa,EAAE;oBACbjI,IAAI,EAAE,wBAAwB;oBAC9BkI,sBAAsB,EAAE,CAAC;kBAC3B;gBACF;cACF,CAAC;cACDC,KAAK,EAAE;gBACLnI,IAAI,EAAE,aAAa;gBACnBsH,WAAW,EAAE;kBACXtH,IAAI,EAAE,YAAY;kBAClBoI,UAAU,EAAE;oBACVC,OAAO,EAAE,CACP,sCAAsC;kBAE1C;gBACF;cACF;YACF;UACF;QACF;MACF,CAAC,CAAC;MAEF5J,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IAEFrD,EAAE,CAAC,+DAA+D,EAAE,MAAM;MACxE,MAAM4J,gBAAgB,GAAGhJ,YAAY,CAAC;QACpCQ,OAAO,EAAE,kBAAkB;QAC3BC,WAAW,EAAE,oBAAoB;QACjCe,yBAAyB,EAAE,IAAI;QAC/BF,oBAAoB,EAAE,IAAI;QAC1BC,iBAAiB,EAAE,qBAAqB;QACxCE,UAAU,EAAE;UACV,IAAI,EAAE;YAAEf,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAK,CAAC;UAC3C,MAAM,EAAE;YAAEC,IAAI,EAAE,QAAQ;YAAEuE,KAAK,EAAE,IAAI;YAAExE,WAAW,EAAE;UAAO,CAAC;UAC5D,SAAS,EAAE;YAAEC,IAAI,EAAE,SAAS;YAAEuE,KAAK,EAAE,IAAI;YAAExE,WAAW,EAAE;UAAU,CAAC;UACnE,aAAa,EAAE;YAAEC,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAe;QAC/D;MACF,CAAC,CAAC;MAEmBjB,wBAAwB,CAAC;QAC5CuC,UAAU,EAAEiH;MACd,CAAC,CAAC;MACmBrJ,wBAAwB,CAAC;QAC5CoC,UAAU,EAAEiH;MACd,CAAC,CAAC;MAEF7J,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EACFvD,QAAQ,CAAC,SAAS,EAAE,MAAM;IACxBE,EAAE,CAAC,wBAAwB,EAAE,MAAM;MACjC,MAAMqH,EAAE,GAAG7G,wBAAwB,CAAC;QAClCY,OAAO,EAAE,IAAI;QACbyI,WAAW,EAAE,kCAAkC;QAC/CC,QAAQ,EAAE;MACZ,CAAC,CAAC;MACkBrJ,eAAe,CAAC;QAClCW,OAAO,EAAE,aAAa;QACtBiB,UAAU,EAAE;UACVgF;QACF;MACF,CAAC,CAAC;MACFtH,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IACFrD,EAAE,CAAC,wBAAwB,EAAE,MAAM;MACjC;MACA,MAAM8E,GAAuB,GAAG;QAC9B1D,OAAO,EAAE,uBAAuB;QAChC2I,oBAAoB,EAAE,KAAK;QAC3BzI,IAAI,EAAE,QAAQ;QACd0I,MAAM,EAAE7I,sBAAsB,CAAC8I;MACjC,CAAC;MACD/I,oBAAoB,CAAC4D,GAAG,CAAC;MAELrE,eAAe,CAAC;QAClCW,OAAO,EAAE,aAAa;QACtBiB,UAAU,EAAE;UACVyC;QACF;MACF,CAAC,CAAC;MACF/E,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;IACFrD,EAAE,CAAC,sCAAsC,EAAE,YAAY;MACrD,MAAMkK,YAAY,GAAGvK,IAAI,CAACwK,OAAO,CAACxK,IAAI,CAACyK,IAAI,CACzCC,SAAS,EACT,IAAI,EACJ,kBAAkB,EAClB,sCACF,CAAC,CAAC;MACF,MAAMxJ,cAAc,CAAC,iBAAiB,EAAE,MAAM;QAC5C,MAAM6G,KAAK,GAAG1G,wBAAwB,CAAC;UACrCI,OAAO,EAAE,OAAO;UAChBE,IAAI,EAAE;QACR,CAAC,CAAC;QACF,MAAMgJ,WAAW,GAAG7J,eAAe,CAAC;UAClCW,OAAO,EAAE,aAAa;UACtBiB,UAAU,EAAE;YACVqF;UACF;QACF,CAAC,CAAC;QACe9G,YAAY,CAAC;UAC5BsB,oBAAoB,EAAE,KAAK;UAC3Bb,WAAW,EAAE,WAAW;UACxBc,iBAAiB,EAAE,WAAW;UAC9Bf,OAAO,EAAE,UAAU;UACnBgB,yBAAyB,EAAE,KAAK;UAChCC,UAAU,EAAE;YAAE,KAAK,EAAE;cAAEf,IAAI,EAAE;YAAS;UAAE,CAAC;UACzCkE,oBAAoB,EAAE,CAAC;YACrBC,UAAU,EAAE6E,WAAW;YACvB5E,eAAe,EAAE,CAAC;cAChBC,iBAAiB,EAAE,sBAAsB;cACzCC,MAAM,EAAE;YACV,CAAC;UACH,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,EAAEsE,YAAY,CAAC;MAEhBnK,MAAM,CACJL,EAAE,CAAC6K,YAAY,CACb5K,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,wCAAwC,CAAC,EACjE,MACF,CACF,CAAC,CAAC7G,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;MAEFtD,MAAM,CACJL,EAAE,CAAC6K,YAAY,CACb5K,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,kCAAkC,CAAC,EAC3D,MACF,CACF,CAAC,CAAC7G,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;MAEFtD,MAAM,CACJL,EAAE,CAAC6K,YAAY,CACb5K,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,wCAAwC,CAAC,EACjE,MACF,CACF,CAAC,CAAC7G,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;MACF3D,EAAE,CAAC8K,MAAM,CAAC7K,IAAI,CAACwK,OAAO,CAACxK,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE;QACrDO,SAAS,EAAE,IAAI;QACfC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;IACF1K,EAAE,CAAC,0DAA0D,EAAE,YAAY;MACzE,MAAMkK,YAAY,GAAGvK,IAAI,CAACwK,OAAO,CAACxK,IAAI,CAACyK,IAAI,CACzCC,SAAS,EACT,IAAI,EACJ,kBAAkB,EAClB,0DACF,CAAC,CAAC;MACF,MAAMxJ,cAAc,CAAC,eAAe,EAAE,MAAM;QAC1C,MAAM4C,eAAe,GAAGhD,eAAe,CAAC;UACtCW,OAAO,EAAE,iBAAiB;UAC1BiB,UAAU,EAAE;YACVqB,SAAS,EAAE;UACb;QACF,CAAC,CAAC;QACqBjD,eAAe,CAAC;UACrCW,OAAO,EAAE,gBAAgB;UACzBiB,UAAU,EAAE;YACVsB,SAAS,EAAE;UACb,CAAC;UACDC,OAAO,EAAE,CAACH,eAAe;QAC3B,CAAC,CAAC;MACJ,CAAC,EAAEyG,YAAY,CAAC;MAEhBnK,MAAM,CACJL,EAAE,CAAC6K,YAAY,CACb5K,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,2CAA2C,CAAC,EACpE,MACF,CACF,CAAC,CAAC7G,qBAAqB,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;MACF3D,EAAE,CAAC8K,MAAM,CAAC7K,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,IAAI,CAAC,EAAE;QACvCO,SAAS,EAAE,IAAI;QACfC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;IACF1K,EAAE,CAAC,2EAA2E,EAAE,MAAM;MACpF,MAAMyD,eAAe,GAAGhD,eAAe,CAAC;QACtCW,OAAO,EAAE,iBAAiB;QAC1BiB,UAAU,EAAE;UACVsI,UAAU,EAAE;QACd;MACF,CAAC,CAAC;MACF,MAAMC,cAAc,GAAGnK,eAAe,CAAC;QACrCW,OAAO,EAAE,gBAAgB;QACzBiB,UAAU,EAAE;UACVwI,UAAU,EAAE;QACd,CAAC;QACDjH,OAAO,EAAE,CAACH,eAAe;MAC3B,CAAC,CAAC;MACgB7C,YAAY,CAAC;QAC7BQ,OAAO,EAAE,WAAW;QACpBgB,yBAAyB,EAAE,WAAW;QACtCF,oBAAoB,EAAE,WAAW;QACjCb,WAAW,EAAE,WAAW;QACxBc,iBAAiB,EAAE,YAAY;QAC/BE,UAAU,EAAE;UACV,WAAW,EAAE;YAAEf,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAY,CAAC;UACzD,WAAW,EAAE;YAAEC,IAAI,EAAE,QAAQ;YAAED,WAAW,EAAE;UAAY;QAC1D,CAAC;QACDmE,oBAAoB,EAAE,CACpB;UACEC,UAAU,EAAEmF,cAAc;UAC1BlF,eAAe,EAAE,CACf;YACEC,iBAAiB,EAAE,yBAAyB;YAC5CC,MAAM,EAAE;UACV,CAAC,EACD;YACED,iBAAiB,EAAE,yBAAyB;YAC5CC,MAAM,EAAE;UACV,CAAC;QAEL,CAAC;MAEL,CAAC,CAAC;MAEF7F,MAAM,CAACe,wBAAwB,CAAC,CAAC,CAAC,CAACuC,qBAAqB,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EACFvD,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC7BE,EAAE,CAAC,6BAA6B,EAAE,YAAY;MAC5C,MAAMkK,YAAY,GAAGvK,IAAI,CAACwK,OAAO,CAACxK,IAAI,CAACyK,IAAI,CACzCC,SAAS,EACT,IAAI,EACJ,kBAAkB,EAClB,6BACF,CAAC,CAAC;MACF,MAAMxJ,cAAc,CAClB,eAAe,EACf,MAAM;QACJZ,aAAa,CAAC,cAAc,EAAEL,aAAa,CAACkL,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;QAC7DvK,eAAe,CAAC;UACdW,OAAO,EAAE,aAAa;UACtBiB,UAAU,EAAE;YACVqB,SAAS,EAAE;UACb;QACF,CAAC,CAAC;MACJ,CAAC,EACDwG,YAAY,EACZvK,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,mBAAmB,CAC7C,CAAC;MAED,MAAMe,WAAW,GAAGC,IAAI,CAACC,KAAK,CAC5BzL,EAAE,CAAC6K,YAAY,CACb5K,IAAI,CAACyK,IAAI,CAACC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAChD,MACF,CACF,CAAC;MACDtK,MAAM,CAACkL,WAAW,CAACxJ,OAAO,CAAC,CAACsB,WAAW,CAAC,CAAC;MAEzChD,MAAM,CACJL,EAAE,CAAC6K,YAAY,CAAC5K,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,mBAAmB,CAAC,EAAE,MAAM,CACtE,CAAC,CAAC7G,qBAAqB,CAAC;AAC9B;AACA,6BAA6B4H,WAAW,CAACxJ,OAAO;AAChD;AACA,OAAO,CAAC;MAEF1B,MAAM,CACJL,EAAE,CAAC6K,YAAY,CAAC5K,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,CAC7D,CAAC,CACEkB,SAAS,CACR,mEACF,CAAC;MAEH1L,EAAE,CAAC8K,MAAM,CAAC7K,IAAI,CAACyK,IAAI,CAACF,YAAY,EAAE,IAAI,CAAC,EAAE;QACvCO,SAAS,EAAE,IAAI;QACfC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|