dragonfly-schema 2.202.0 → 2.203.2

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/models/index.ts","../src/models/_GridParameterBase.ts","../src/deepTransform.ts","../src/models/_OpenAPIGenBaseModel.ts","../src/models/_LouversBase.ts","../src/models/_WindowParameterBase.ts","../src/models/AllAirEconomizerType.ts","../src/models/BaseboardEquipmentType.ts","../src/models/Building.ts","../src/models/BuildingPropertiesAbridged.ts","../src/models/BuildingEnergyPropertiesAbridged.ts","../src/models/BuildingRadiancePropertiesAbridged.ts","../src/models/RoofSpecification.ts","../src/models/DetailedClearstory.ts","../src/helpers/class-validator.ts","../src/models/Story.ts","../src/models/Room2D.ts","../src/models/DetailedSkylights.ts","../src/models/DetailedWindows.ts","../src/models/ExtrudedBorder.ts","../src/models/GriddedSkylightArea.ts","../src/models/GriddedSkylightRatio.ts","../src/models/LouversByCount.ts","../src/models/LouversByDistance.ts","../src/models/Overhang.ts","../src/models/RectangularWindows.ts","../src/models/RepeatingWindowRatio.ts","../src/models/Room2DPropertiesAbridged.ts","../src/models/Room2DComparisonProperties.ts","../src/models/SimpleWindowArea.ts","../src/models/SimpleWindowRatio.ts","../src/models/SingleWindow.ts","../src/models/Room2DDoe2Properties.ts","../src/models/Room2DEnergyPropertiesAbridged.ts","../src/models/Room2DRadiancePropertiesAbridged.ts","../src/models/ExteriorApertureGridParameter.ts","../src/models/ExteriorApertureType.ts","../src/models/ExteriorFaceGridParameter.ts","../src/models/ExteriorFaceType.ts","../src/models/RoomGridParameter.ts","../src/models/RoomRadialGridParameter.ts","../src/models/StoryPropertiesAbridged.ts","../src/models/StoryEnergyPropertiesAbridged.ts","../src/models/StoryRadiancePropertiesAbridged.ts","../src/models/StoryType.ts","../src/models/ContextShade.ts","../src/models/ContextShadePropertiesAbridged.ts","../src/models/ContextShadeEnergyPropertiesAbridged.ts","../src/models/ContextShadeRadiancePropertiesAbridged.ts","../src/models/ControlType.ts","../src/models/EconomizerType.ts","../src/models/EvaporativeCoolerEquipmentType.ts","../src/models/FaceType.ts","../src/models/FCUEquipmentType.ts","../src/models/FCUwithDOASEquipmentType.ts","../src/models/FuelTypes.ts","../src/models/FurnaceEquipmentType.ts","../src/models/GasType.ts","../src/models/GasUnitHeaterEquipmentType.ts","../src/models/Model.ts","../src/models/ModelProperties.ts","../src/models/ModelComparisonProperties.ts","../src/models/ModelDoe2Properties.ts","../src/models/ModelEnergyProperties.ts","../src/models/ModelRadianceProperties.ts","../src/models/Units.ts","../src/models/ModuleType.ts","../src/models/MoistureDiffusionModel.ts","../src/models/MountingType.ts","../src/models/PSZEquipmentType.ts","../src/models/PTACEquipmentType.ts","../src/models/PVAVEquipmentType.ts","../src/models/RadiantEquipmentType.ts","../src/models/RadiantFaceTypes.ts","../src/models/RadiantwithDOASEquipmentType.ts","../src/models/ResidentialEquipmentType.ts","../src/models/Roughness.ts","../src/models/ScheduleNumericType.ts","../src/models/ScheduleUnitType.ts","../src/models/ShadeLocation.ts","../src/models/SHWEquipmentType.ts","../src/models/SlatOrientation.ts","../src/models/VAVEquipmentType.ts","../src/models/VentilationMethod.ts","../src/models/VentilationType.ts","../src/models/Vintages.ts","../src/models/VRFEquipmentType.ts","../src/models/VRFwithDOASEquipmentType.ts","../src/models/WindowACEquipmentType.ts","../src/models/WSHPEquipmentType.ts","../src/models/WSHPwithDOASEquipmentType.ts"],"sourcesContent":["export * from \"./models/index\";\nexport * from \"./helpers/class-validator\"","// Auto-generated\nimport 'reflect-metadata'; // Must have for class validator // Ensure this is at the top\nexport * from \"./_GridParameterBase\";\nexport * from \"./_LouversBase\";\nexport * from \"./_OpenAPIGenBaseModel\";\nexport * from \"./_WindowParameterBase\";\nexport * from \"./AllAirEconomizerType\";\nexport * from \"./BaseboardEquipmentType\";\nexport * from \"./Building\";\nexport * from \"./BuildingEnergyPropertiesAbridged\";\nexport * from \"./BuildingPropertiesAbridged\";\nexport * from \"./BuildingRadiancePropertiesAbridged\";\nexport * from \"./ContextShade\";\nexport * from \"./ContextShadeEnergyPropertiesAbridged\";\nexport * from \"./ContextShadePropertiesAbridged\";\nexport * from \"./ContextShadeRadiancePropertiesAbridged\";\nexport * from \"./ControlType\";\nexport * from \"./DetailedClearstory\";\nexport * from \"./DetailedSkylights\";\nexport * from \"./DetailedWindows\";\nexport * from \"./EconomizerType\";\nexport * from \"./EvaporativeCoolerEquipmentType\";\nexport * from \"./ExteriorApertureGridParameter\";\nexport * from \"./ExteriorApertureType\";\nexport * from \"./ExteriorFaceGridParameter\";\nexport * from \"./ExteriorFaceType\";\nexport * from \"./ExtrudedBorder\";\nexport * from \"./FaceType\";\nexport * from \"./FCUEquipmentType\";\nexport * from \"./FCUwithDOASEquipmentType\";\nexport * from \"./FuelTypes\";\nexport * from \"./FurnaceEquipmentType\";\nexport * from \"./GasType\";\nexport * from \"./GasUnitHeaterEquipmentType\";\nexport * from \"./GriddedSkylightArea\";\nexport * from \"./GriddedSkylightRatio\";\nexport * from \"./LouversByCount\";\nexport * from \"./LouversByDistance\";\nexport * from \"./Model\";\nexport * from \"./ModelComparisonProperties\";\nexport * from \"./ModelDoe2Properties\";\nexport * from \"./ModelEnergyProperties\";\nexport * from \"./ModelProperties\";\nexport * from \"./ModelRadianceProperties\";\nexport * from \"./ModuleType\";\nexport * from \"./MoistureDiffusionModel\";\nexport * from \"./MountingType\";\nexport * from \"./Overhang\";\nexport * from \"./PSZEquipmentType\";\nexport * from \"./PTACEquipmentType\";\nexport * from \"./PVAVEquipmentType\";\nexport * from \"./RadiantEquipmentType\";\nexport * from \"./RadiantFaceTypes\";\nexport * from \"./RadiantwithDOASEquipmentType\";\nexport * from \"./RectangularWindows\";\nexport * from \"./RepeatingWindowRatio\";\nexport * from \"./ResidentialEquipmentType\";\nexport * from \"./RoofSpecification\";\nexport * from \"./Room2D\";\nexport * from \"./Room2DComparisonProperties\";\nexport * from \"./Room2DDoe2Properties\";\nexport * from \"./Room2DEnergyPropertiesAbridged\";\nexport * from \"./Room2DPropertiesAbridged\";\nexport * from \"./Room2DRadiancePropertiesAbridged\";\nexport * from \"./RoomGridParameter\";\nexport * from \"./RoomRadialGridParameter\";\nexport * from \"./Roughness\";\nexport * from \"./ScheduleNumericType\";\nexport * from \"./ScheduleUnitType\";\nexport * from \"./ShadeLocation\";\nexport * from \"./SHWEquipmentType\";\nexport * from \"./SimpleWindowArea\";\nexport * from \"./SimpleWindowRatio\";\nexport * from \"./SingleWindow\";\nexport * from \"./SlatOrientation\";\nexport * from \"./Story\";\nexport * from \"./StoryEnergyPropertiesAbridged\";\nexport * from \"./StoryPropertiesAbridged\";\nexport * from \"./StoryRadiancePropertiesAbridged\";\nexport * from \"./StoryType\";\nexport * from \"./Units\";\nexport * from \"./VAVEquipmentType\";\nexport * from \"./VentilationMethod\";\nexport * from \"./VentilationType\";\nexport * from \"./Vintages\";\nexport * from \"./VRFEquipmentType\";\nexport * from \"./VRFwithDOASEquipmentType\";\nexport * from \"./WindowACEquipmentType\";\nexport * from \"./WSHPEquipmentType\";\nexport * from \"./WSHPwithDOASEquipmentType\";\n","import { IsNumber, IsDefined, IsBoolean, IsOptional, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base object for all GridParameters. */\nexport class _GridParameterBase extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"dimension\" })\n /** The dimension of the grid cells as a number. */\n dimension!: number;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"include_mesh\" })\n /** A boolean to note whether the resulting SensorGrid should include the mesh. */\n includeMesh: boolean = true;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Matches(/^_GridParameterBase$/)\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"_GridParameterBase\";\n\t\n\n constructor() {\n super();\n this.includeMesh = true;\n this.type = \"_GridParameterBase\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(_GridParameterBase, _data);\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n this.type = obj.type ?? \"_GridParameterBase\";\n }\n }\n\n\n static override fromJS(data: any): _GridParameterBase {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new _GridParameterBase();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dimension\"] = this.dimension;\n data[\"include_mesh\"] = this.includeMesh ?? true;\n data[\"type\"] = this.type ?? \"_GridParameterBase\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { plainToInstance } from \"class-transformer\";\n\nexport function deepTransform<T extends object>(cls: new () => T, plain: any): T {\n // Use a try-catch block for abstract classes\n let instance: T;\n try {\n instance = plainToInstance(cls, plain, { enableImplicitConversion: true, exposeUnsetFields: false, exposeDefaultValues: true });\n } catch (e) {\n // If cls is abstract, create a plain object with the same properties\n instance = plain as T;\n }\n\n for (const key of Object.keys(instance)) {\n const value = (instance as any)[key];\n\n // If the value is a plain object and the class has a type hint\n const metadataType = Reflect.getMetadata('design:type', instance, key);\n\n if (\n value &&\n typeof value === 'object' &&\n metadataType &&\n typeof metadataType === 'function' &&\n metadataType !== Object &&\n !(value instanceof metadataType)\n ) {\n (instance as any)[key] = deepTransform(metadataType, value);\n }\n }\n\n return instance;\n}","import { IsString, IsOptional, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\n\nexport abstract class _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"type\" })\n /** A base class to use when there is no baseclass available to fall on. */\n type: string = \"InvalidType\";\n\t\n\n constructor() {\n this.type = \"InvalidType\";\n }\n\n\n init(_data?: any) {\n\n }\n\n\n static fromJS(data: any): _OpenAPIGenBaseModel {\n data = typeof data === 'object' ? data : {};\n\n throw new Error(\"The abstract class '_OpenAPIGenBaseModel' cannot be instantiated.\");\n }\n\n\ttoJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"InvalidType\";\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsOptional, Min, Max, IsArray, IsBoolean, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for for a series of louvered shades over a wall. */\nexport class _LouversBase extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"depth\" })\n /** A number for the depth to extrude the louvers. */\n depth!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"offset\" })\n /** A number for the distance to louvers from the wall. */\n offset: number = 0;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(-90)\n @Max(90)\n @Expose({ name: \"angle\" })\n /** A number between -90 and 90 for the for an angle to rotate the louvers in degrees. 0 indicates louvers perpendicular to the wall. Positive values indicate a downward rotation. Negative values indicate an upward rotation. */\n angle: number = 0;\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsOptional()\n @Expose({ name: \"contour_vector\" })\n /** A list of two float values representing the (x, y) of a 2D vector for the direction along which contours are generated. (0, 1) will generate horizontal contours, (1, 0) will generate vertical contours, and (1, 1) will generate diagonal contours. */\n contourVector: number[] = [0, 1];\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"flip_start_side\" })\n /** Boolean to note whether the side the louvers start from should be flipped. Default is False to have contours on top or right. Setting to True will start contours on the bottom or left. */\n flipStartSide: boolean = false;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Matches(/^_LouversBase$/)\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"_LouversBase\";\n\t\n\n constructor() {\n super();\n this.offset = 0;\n this.angle = 0;\n this.contourVector = [0, 1];\n this.flipStartSide = false;\n this.type = \"_LouversBase\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(_LouversBase, _data);\n this.depth = obj.depth;\n this.offset = obj.offset ?? 0;\n this.angle = obj.angle ?? 0;\n this.contourVector = obj.contourVector ?? [0, 1];\n this.flipStartSide = obj.flipStartSide ?? false;\n this.type = obj.type ?? \"_LouversBase\";\n }\n }\n\n\n static override fromJS(data: any): _LouversBase {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new _LouversBase();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"depth\"] = this.depth;\n data[\"offset\"] = this.offset ?? 0;\n data[\"angle\"] = this.angle ?? 0;\n data[\"contour_vector\"] = this.contourVector ?? [0, 1];\n data[\"flip_start_side\"] = this.flipStartSide ?? false;\n data[\"type\"] = this.type ?? \"_LouversBase\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsOptional, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for all window parameters. */\nexport class _WindowParameterBase extends _OpenAPIGenBaseModel {\n @IsOptional()\n @Expose({ name: \"user_data\" })\n /** Optional dictionary of user data associated with the object.All keys and values of this dictionary should be of a standard data type to ensure correct serialization of the object (eg. str, float, int, list). When a list is used, each item in the list will be assigned to the generated Honeybee apertures. */\n userData?: Object;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Matches(/^_WindowParameterBase$/)\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"_WindowParameterBase\";\n\t\n\n constructor() {\n super();\n this.type = \"_WindowParameterBase\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(_WindowParameterBase, _data);\n this.userData = obj.userData;\n this.type = obj.type ?? \"_WindowParameterBase\";\n }\n }\n\n\n static override fromJS(data: any): _WindowParameterBase {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new _WindowParameterBase();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"user_data\"] = this.userData;\n data[\"type\"] = this.type ?? \"_WindowParameterBase\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum AllAirEconomizerType {\n NoEconomizer = \"NoEconomizer\",\n DifferentialDryBulb = \"DifferentialDryBulb\",\n DifferentialEnthalpy = \"DifferentialEnthalpy\",\n DifferentialDryBulbAndEnthalpy = \"DifferentialDryBulbAndEnthalpy\",\n FixedDryBulb = \"FixedDryBulb\",\n FixedEnthalpy = \"FixedEnthalpy\",\n ElectronicEnthalpy = \"ElectronicEnthalpy\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum BaseboardEquipmentType {\n ElectricBaseboard = \"ElectricBaseboard\",\n BoilerBaseboard = \"BoilerBaseboard\",\n ASHPBaseboard = \"ASHPBaseboard\",\n DHWBaseboard = \"DHWBaseboard\",\n}","import { IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Equals, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { BuildingPropertiesAbridged } from \"./BuildingPropertiesAbridged\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { RoofSpecification } from \"./RoofSpecification\";\nimport { Room } from \"honeybee-schema\";\nimport { Story } from \"./Story\";\n\nexport class Building extends IDdBaseModel {\n @Type(() => BuildingPropertiesAbridged)\n @IsInstance(BuildingPropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: BuildingPropertiesAbridged;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Building\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Building\";\n\t\n @IsArray()\n @Type(() => Story)\n @IsInstance(Story, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"unique_stories\" })\n /** An array of unique dragonfly Story objects that together form the entire building. Stories should generally be ordered from lowest floor to highest floor, though this is not required. Note that, if a given Story is repeated several times over the height of the building and this is represented by the multiplier, the unique story included in this list should be the first (lowest) story of the repeated floors. */\n uniqueStories?: Story[];\n\t\n @IsArray()\n @Type(() => Room)\n @IsInstance(Room, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"room_3ds\" })\n /** An optional array of 3D Honeybee Room objects for additional Rooms that are a part of the Building but are not represented within the unique_stories. This is useful when there are parts of the Building geometry that cannot easily be represented with the extruded floor plate and sloped roof assumptions that underlie Dragonfly Room2Ds and RoofSpecification. Cases where this input is most useful include sloped walls and certain types of domed roofs that become tedious to implement with RoofSpecification. Matching the Honeybee Room.story property to the Dragonfly Story.display_name of an object within the unique_stories will effectively place the Honeybee Room on that Story for the purposes of floor_area, exterior_wall_area, etc. However, note that the Honeybee Room.multiplier property takes precedence over whatever multiplier is assigned to the Dragonfly Story that the Room.story may reference. (Default: None). */\n room3ds?: Room[];\n\t\n @Type(() => RoofSpecification)\n @IsInstance(RoofSpecification)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"roof\" })\n /** An optional RoofSpecification object that provides an alternative way to describe roof geometry over rooms (instead of specifying roofs on each story). If trying to decide between the two, specifying geometry on each story is closer to how dragonfly natively works with roof geometry as it relates to rooms. However, when it is unknown which roof geometries correspond to which stories, this Building-level attribute may be used and each roof geometry will automatically be added to the best Story in the Building upon serialization to Python. This automatic assignment will happen by checking for overlaps between the Story Room2Ds and the Roof geometry in plan. When a given roof geometry overlaps with several Stories, the top-most Story will get the roof geometry assigned to it unless this top Story has a floor_height above the roof geometry, in which case the next highest story will be checked until a compatible one is found. */\n roof?: RoofSpecification;\n\t\n\n constructor() {\n super();\n this.type = \"Building\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Building, _data);\n this.properties = obj.properties;\n this.type = obj.type ?? \"Building\";\n this.uniqueStories = obj.uniqueStories;\n this.room3ds = obj.room3ds;\n this.roof = obj.roof;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): Building {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Building();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"Building\";\n data[\"unique_stories\"] = this.uniqueStories;\n data[\"room_3ds\"] = this.room3ds;\n data[\"roof\"] = this.roof;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { BuildingEnergyPropertiesAbridged } from \"./BuildingEnergyPropertiesAbridged\";\nimport { BuildingRadiancePropertiesAbridged } from \"./BuildingRadiancePropertiesAbridged\";\n\nexport class BuildingPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"BuildingPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"BuildingPropertiesAbridged\";\n\t\n @Type(() => BuildingEnergyPropertiesAbridged)\n @IsInstance(BuildingEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: BuildingEnergyPropertiesAbridged;\n\t\n @Type(() => BuildingRadiancePropertiesAbridged)\n @IsInstance(BuildingRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: BuildingRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"BuildingPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(BuildingPropertiesAbridged, _data);\n this.type = obj.type ?? \"BuildingPropertiesAbridged\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): BuildingPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new BuildingPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"BuildingPropertiesAbridged\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, MinLength, MaxLength, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class BuildingEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"BuildingEnergyPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"BuildingEnergyPropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"construction_set\" })\n /** Name of a ConstructionSet to specify all constructions for the Building. If None, the Model global_construction_set will be used. */\n constructionSet?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"ceiling_plenum_construction\" })\n /** Identifier of an OpaqueConstruction for the bottoms of ceiling plenums. Materials should be ordered from the plenum side to the room side. By default, this is a simple acoustic tile construction. */\n ceilingPlenumConstruction?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"floor_plenum_construction\" })\n /** Identifier of an OpaqueConstruction for the tops of floor plenums. Materials should be ordered from the plenum side to the room side. By default, this is a simple wood plank construction. */\n floorPlenumConstruction?: string;\n\t\n\n constructor() {\n super();\n this.type = \"BuildingEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(BuildingEnergyPropertiesAbridged, _data);\n this.type = obj.type ?? \"BuildingEnergyPropertiesAbridged\";\n this.constructionSet = obj.constructionSet;\n this.ceilingPlenumConstruction = obj.ceilingPlenumConstruction;\n this.floorPlenumConstruction = obj.floorPlenumConstruction;\n }\n }\n\n\n static override fromJS(data: any): BuildingEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new BuildingEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"BuildingEnergyPropertiesAbridged\";\n data[\"construction_set\"] = this.constructionSet;\n data[\"ceiling_plenum_construction\"] = this.ceilingPlenumConstruction;\n data[\"floor_plenum_construction\"] = this.floorPlenumConstruction;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class BuildingRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"BuildingRadiancePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"BuildingRadiancePropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"modifier_set\" })\n /** Name of a ModifierSet to specify all modifiers for the Building. If None, the Model global_modifier_set will be used. */\n modifierSet?: string;\n\t\n\n constructor() {\n super();\n this.type = \"BuildingRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(BuildingRadiancePropertiesAbridged, _data);\n this.type = obj.type ?? \"BuildingRadiancePropertiesAbridged\";\n this.modifierSet = obj.modifierSet;\n }\n }\n\n\n static override fromJS(data: any): BuildingRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new BuildingRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"BuildingRadiancePropertiesAbridged\";\n data[\"modifier_set\"] = this.modifierSet;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { DetailedClearstory } from \"./DetailedClearstory\";\nimport { Face3D } from \"honeybee-schema\";\nimport { Mesh3D } from \"honeybee-schema\";\n\n/** Geometry for specifying sloped roofs over a Story. */\nexport class RoofSpecification extends _OpenAPIGenBaseModel {\n @IsArray()\n @IsDefined()\n @Expose({ name: \"geometry\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'Face3D') return Face3D.fromJS(item);\n else if (item?.type === 'Mesh3D') return Mesh3D.fromJS(item);\n else return item;\n }))\n /** An array of Face3D (or Mesh3D) objects representing the geometry of the Roof. Cases where Room2Ds are only partially covered by these roof geometries will result in those portions of the Room2Ds being extruded to their floor_to_ceiling_height. */\n geometry!: (Face3D | Mesh3D)[];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RoofSpecification\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RoofSpecification\";\n\t\n @IsArray()\n @Type(() => DetailedClearstory)\n @IsInstance(DetailedClearstory, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"clearstory_parameters\" })\n /** A list of ClearstoryParameter objects that dictate how to generate window geometries for any vertical walls that result from the translation of roof geometry. If None, no clearstory windows will exist over the roof. */\n clearstoryParameters?: DetailedClearstory[];\n\t\n\n constructor() {\n super();\n this.type = \"RoofSpecification\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RoofSpecification, _data);\n this.geometry = obj.geometry;\n this.type = obj.type ?? \"RoofSpecification\";\n this.clearstoryParameters = obj.clearstoryParameters;\n }\n }\n\n\n static override fromJS(data: any): RoofSpecification {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RoofSpecification();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"geometry\"] = this.geometry;\n data[\"type\"] = this.type ?? \"RoofSpecification\";\n data[\"clearstory_parameters\"] = this.clearstoryParameters;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsNumber, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Instructions for detailed clearstory windows, defined by 2D Polygons. */\nexport class DetailedClearstory extends _OpenAPIGenBaseModel {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"base_line\" })\n /** An array of two sub-arrays with each sub-array representing the start and end point of a 2D line segment in the world XY system. This establishes the plane and domain in which the clearstory geometries exist. */\n baseLine!: number[][];\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"elevation\" })\n /** A number for the Z-coordinate that places the base_line and the corresponding clearstory window polygons in 3D space. This elevation value should be below all of the 3D clearstory window geometries and helps set the origin of the plane in which the clearstory geometry exists. */\n elevation!: number;\n\t\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"polygons\" })\n /** An array of arrays with each sub-array representing a polygonal boundary of a clearstory window or door. Each sub-array should consist of arrays representing points, which contain 2 values for 2D coordinates in the plane defined by the base_line. The base_line plane is assumed to have an origin at the end point of the line segment (the second point) and an X-axis extending along the length of the segment. The Y-axis of the plane always points upwards. Therefore, both X and Y coordinates of the points in each polygon should be positive. */\n polygons!: number[][][];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"DetailedClearstory\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"DetailedClearstory\";\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"are_doors\" })\n /** An array of booleans that align with the polygons and note whether each of the polygons represents a door out onto a roof or balcony (True) or a clearstory window (False). If None, it will be assumed that all polygons represent windows and they will be translated to Apertures in any resulting Honeybee model */\n areDoors?: boolean[];\n\t\n\n constructor() {\n super();\n this.type = \"DetailedClearstory\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(DetailedClearstory, _data);\n this.baseLine = obj.baseLine;\n this.elevation = obj.elevation;\n this.polygons = obj.polygons;\n this.type = obj.type ?? \"DetailedClearstory\";\n this.areDoors = obj.areDoors;\n }\n }\n\n\n static override fromJS(data: any): DetailedClearstory {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new DetailedClearstory();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"base_line\"] = this.baseLine;\n data[\"elevation\"] = this.elevation;\n data[\"polygons\"] = this.polygons;\n data[\"type\"] = this.type ?? \"DetailedClearstory\";\n data[\"are_doors\"] = this.areDoors;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { registerDecorator, ValidationOptions, ValidationArguments } from 'class-validator';\n\n\n// Custom decorator to validate nested arrays of numbers\nexport function IsNestedNumberArray(validationOptions?: ValidationOptions) {\n return function (object: Object, propertyName: string) {\n registerDecorator({\n name: 'isNestedNumberArray',\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n validator: {\n validate(value: any, args: ValidationArguments) {\n if (value === undefined || value === null) return true; // Allow optional values\n if (!Array.isArray(value)) return false;\n return value.every(\n (arr: any) => Array.isArray(arr) && arr.every(\n (subArr: any) => \n (Array.isArray(subArr) && subArr.every(\n (num: any) => typeof num === 'number'\n )) || \n typeof subArr === 'number'\n )\n );\n },\n defaultMessage(args: ValidationArguments) {\n return `${args.property} must be number[][] or number[][][]`;\n }\n }\n });\n };\n}\n \n \n// Custom decorator to validate nested arrays of numbers\nexport function IsNestedIntegerArray(validationOptions?: ValidationOptions) {\n return function (object: Object, propertyName: string) {\n registerDecorator({\n name: 'isNestedIntegerArray',\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n validator: {\n validate(value: any, args: ValidationArguments) {\n if (value === undefined || value === null) return true; // Allow optional values\n if (!Array.isArray(value)) return false;\n return value.every(\n (arr: any) => Array.isArray(arr) && arr.every(\n (subArr: any) => \n (Array.isArray(subArr) && subArr.every(\n (num: any) => Number.isInteger(num)\n )) || \n Number.isInteger(subArr)\n )\n );\n },\n defaultMessage(args: ValidationArguments) {\n return `${args.property} must be number[][] or number[][][]`;\n }\n }\n });\n };\n}\n\n\n// Custom decorator to validate nested arrays of numbers\nexport function IsNestedStringArray(validationOptions?: ValidationOptions) {\n return function (object: Object, propertyName: string) {\n registerDecorator({\n name: 'isNestedStringArray',\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n validator: {\n validate(value: any, args: ValidationArguments) {\n if (value === undefined || value === null) return true; // Allow optional values\n if (!Array.isArray(value)) return false;\n return value.every(\n (arr: any) => Array.isArray(arr) && arr.every(\n (subArr: any) => \n (Array.isArray(subArr) && subArr.every(\n (num: any) => typeof num === 'string'\n )) || \n typeof subArr === 'string'\n )\n );\n },\n defaultMessage(args: ValidationArguments) {\n return `${args.property} must be string[][] or string[][][]`;\n }\n }\n });\n };\n}","import { IsArray, IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Equals, IsInt, Min, IsEnum, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { Autocalculate } from \"honeybee-schema\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { RoofSpecification } from \"./RoofSpecification\";\nimport { Room2D } from \"./Room2D\";\nimport { StoryPropertiesAbridged } from \"./StoryPropertiesAbridged\";\nimport { StoryType } from \"./StoryType\";\n\nexport class Story extends IDdBaseModel {\n @IsArray()\n @Type(() => Room2D)\n @IsInstance(Room2D, { each: true })\n @ValidateNested({ each: true })\n @IsDefined()\n @Expose({ name: \"room_2ds\" })\n /** An array of dragonfly Room2D objects that together form an entire story of a building. */\n room2ds!: Room2D[];\n\t\n @Type(() => StoryPropertiesAbridged)\n @IsInstance(StoryPropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: StoryPropertiesAbridged;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Story\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Story\";\n\t\n @IsOptional()\n @Expose({ name: \"floor_to_floor_height\" })\n /** A number for the distance from the floor plate of this story to the floor of the story above this one (if it exists). If Autocalculate, this value will be the maximum floor_to_ceiling_height of the input room_2ds. */\n floorToFloorHeight: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"floor_height\" })\n /** A number to indicate the height of the floor plane in the Z axis.If Autocalculate, this will be the minimum floor height of all the room_2ds, which is suitable for cases where there are no floor plenums. */\n floorHeight: (Autocalculate | number) = new Autocalculate();\n\t\n @Type(() => Number)\n @IsInt()\n @IsOptional()\n @Min(1)\n @Expose({ name: \"multiplier\" })\n /** An integer that denotes the number of times that this Story is repeated over the height of the building. */\n multiplier: number = 1;\n\t\n @Type(() => RoofSpecification)\n @IsInstance(RoofSpecification)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"roof\" })\n /** An optional RoofSpecification object containing geometry for generating sloped roofs over the Story. The RoofSpecification will only affect the child Room2Ds that have a True is_top_exposed property and it will only be utilized in translation to Honeybee when the Story multiplier is 1. If None, all Room2D ceilings will be flat. */\n roof?: RoofSpecification;\n\t\n @Type(() => String)\n @IsEnum(StoryType)\n @IsOptional()\n @Expose({ name: \"story_type\" })\n /** Text to indicate the type of story. Stories that are plenums are translated to Honeybee with excluded floor areas. */\n storyType: StoryType = StoryType.Standard;\n\t\n\n constructor() {\n super();\n this.type = \"Story\";\n this.floorToFloorHeight = new Autocalculate();\n this.floorHeight = new Autocalculate();\n this.multiplier = 1;\n this.storyType = StoryType.Standard;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Story, _data);\n this.room2ds = obj.room2ds;\n this.properties = obj.properties;\n this.type = obj.type ?? \"Story\";\n this.floorToFloorHeight = obj.floorToFloorHeight ?? new Autocalculate();\n this.floorHeight = obj.floorHeight ?? new Autocalculate();\n this.multiplier = obj.multiplier ?? 1;\n this.roof = obj.roof;\n this.storyType = obj.storyType ?? StoryType.Standard;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): Story {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Story();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"room_2ds\"] = this.room2ds;\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"Story\";\n data[\"floor_to_floor_height\"] = this.floorToFloorHeight ?? new Autocalculate();\n data[\"floor_height\"] = this.floorHeight ?? new Autocalculate();\n data[\"multiplier\"] = this.multiplier ?? 1;\n data[\"roof\"] = this.roof;\n data[\"story_type\"] = this.storyType ?? StoryType.Standard;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsNumber, IsInstance, ValidateNested, IsString, IsOptional, Equals, IsBoolean, Min, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { Adiabatic } from \"honeybee-schema\";\nimport { DetailedSkylights } from \"./DetailedSkylights\";\nimport { DetailedWindows } from \"./DetailedWindows\";\nimport { ExtrudedBorder } from \"./ExtrudedBorder\";\nimport { GriddedSkylightArea } from \"./GriddedSkylightArea\";\nimport { GriddedSkylightRatio } from \"./GriddedSkylightRatio\";\nimport { Ground } from \"honeybee-schema\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { LouversByCount } from \"./LouversByCount\";\nimport { LouversByDistance } from \"./LouversByDistance\";\nimport { OtherSideTemperature } from \"honeybee-schema\";\nimport { Outdoors } from \"honeybee-schema\";\nimport { Overhang } from \"./Overhang\";\nimport { RectangularWindows } from \"./RectangularWindows\";\nimport { RepeatingWindowRatio } from \"./RepeatingWindowRatio\";\nimport { Room2DPropertiesAbridged } from \"./Room2DPropertiesAbridged\";\nimport { SimpleWindowArea } from \"./SimpleWindowArea\";\nimport { SimpleWindowRatio } from \"./SimpleWindowRatio\";\nimport { SingleWindow } from \"./SingleWindow\";\nimport { Surface } from \"honeybee-schema\";\n\nexport class Room2D extends IDdBaseModel {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"floor_boundary\" })\n /** A list of 2D points representing the outer boundary vertices of the Room2D. The list should include at least 3 points and each point should be a list of 2 (x, y) values. */\n floorBoundary!: number[][];\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"floor_height\" })\n /** A number to indicate the Z-coordinate (or elevation) of the room floor plane. */\n floorHeight!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"floor_to_ceiling_height\" })\n /** A number for the distance between the floor and the ceiling. */\n floorToCeilingHeight!: number;\n\t\n @Type(() => Room2DPropertiesAbridged)\n @IsInstance(Room2DPropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: Room2DPropertiesAbridged;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2D\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2D\";\n\t\n @IsArray()\n @IsNestedNumberArray()\n @IsOptional()\n @Expose({ name: \"floor_holes\" })\n /** Optional list of lists with one list for each hole in the floor plate. Each hole should be a list of at least 2 points and each point a list of 2 (x, y) values. If None, it will be assumed that there are no holes in the floor plate. */\n floorHoles?: number[][][];\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"is_ground_contact\" })\n /** A boolean noting whether this Room2D has its floor in contact with the ground. */\n isGroundContact: boolean = false;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"is_top_exposed\" })\n /** A boolean noting whether this Room2D has its ceiling exposed to the outdoors. */\n isTopExposed: boolean = false;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"has_floor\" })\n /** A boolean for whether the room has a Floor (True) or an AirBoundary (False). If False, this property will only be meaningful if the model is translated to Honeybee with ceiling adjacency solved and there is a Room2D below this one with a has_ceiling property set to False. */\n hasFloor: boolean = true;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"has_ceiling\" })\n /** A boolean for whether the room has a RoofCeiling (True) or an AirBoundary (False). If False, this property will only be meaningful if the model is translated to Honeybee with ceiling adjacency solved and there is a Room2D above this one with a has_floor property set to False. */\n hasCeiling: boolean = true;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"ceiling_plenum_depth\" })\n /** A number for the depth that a ceiling plenum extends into the room. Setting this to a positive value will result in a separate plenum room being split off of the Room2D volume during translation from Dragonfly to Honeybee. The bottom of this ceiling plenum will always be at this Room2D ceiling height minus the value specified here. Setting this to zero indicates that the room has no ceiling plenum. */\n ceilingPlenumDepth: number = 0;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"floor_plenum_depth\" })\n /** A number for the depth that a floor plenum extends into the room. Setting this to a positive value will result in a separate plenum room being split off of the Room2D volume during translation from Dragonfly to Honeybee. The top of this floor plenum will always be at this Room2D floor height plus the value specified here. Setting this to zero indicates that the room has no floor plenum. */\n floorPlenumDepth: number = 0;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"zone\" })\n /** Text string for for the zone identifier to which this Room2D belongs. Room2Ds sharing the same zone identifier are considered part of the same zone in a Building. If the zone identifier has not been specified, it will be the same as the Room2D identifier in the destination engine. Note that this property has no character restrictions. */\n zone?: string;\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"boundary_conditions\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'Ground') return Ground.fromJS(item);\n else if (item?.type === 'Outdoors') return Outdoors.fromJS(item);\n else if (item?.type === 'Surface') return Surface.fromJS(item);\n else if (item?.type === 'Adiabatic') return Adiabatic.fromJS(item);\n else if (item?.type === 'OtherSideTemperature') return OtherSideTemperature.fromJS(item);\n else return item;\n }))\n /** A list of boundary conditions that match the number of segments in the input floor_geometry + floor_holes. These will be used to assign boundary conditions to each of the walls of the Room in the resulting model. Their order should align with the order of segments in the floor_boundary and then with each hole segment. If None, all boundary conditions will be Outdoors or Ground depending on whether ceiling height of the room is at or below 0 (the assumed ground plane). */\n boundaryConditions?: (Ground | Outdoors | Surface | Adiabatic | OtherSideTemperature)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"window_parameters\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'SingleWindow') return SingleWindow.fromJS(item);\n else if (item?.type === 'SimpleWindowArea') return SimpleWindowArea.fromJS(item);\n else if (item?.type === 'SimpleWindowRatio') return SimpleWindowRatio.fromJS(item);\n else if (item?.type === 'RepeatingWindowRatio') return RepeatingWindowRatio.fromJS(item);\n else if (item?.type === 'RectangularWindows') return RectangularWindows.fromJS(item);\n else if (item?.type === 'DetailedWindows') return DetailedWindows.fromJS(item);\n else return item;\n }))\n /** A list of WindowParameter objects that dictate how the window geometries will be generated for each of the walls. If None, no windows will exist over the entire Room2D. */\n windowParameters?: (SingleWindow | SimpleWindowArea | SimpleWindowRatio | RepeatingWindowRatio | RectangularWindows | DetailedWindows)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"shading_parameters\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ExtrudedBorder') return ExtrudedBorder.fromJS(item);\n else if (item?.type === 'Overhang') return Overhang.fromJS(item);\n else if (item?.type === 'LouversByDistance') return LouversByDistance.fromJS(item);\n else if (item?.type === 'LouversByCount') return LouversByCount.fromJS(item);\n else return item;\n }))\n /** A list of ShadingParameter objects that dictate how the shade geometries will be generated for each of the walls. If None, no shades will exist over the entire Room2D. */\n shadingParameters?: (ExtrudedBorder | Overhang | LouversByDistance | LouversByCount)[];\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"air_boundaries\" })\n /** A list of booleans for whether each wall has an air boundary type. False values indicate a standard opaque type while True values indicate an AirBoundary type. All walls will be False by default. Note that any walls with a True air boundary must have a Surface boundary condition without any windows. */\n airBoundaries?: boolean[];\n\t\n @IsOptional()\n @Expose({ name: \"skylight_parameters\" })\n @Transform(({ value }) => {\n const item = value;\n if (item?.type === 'GriddedSkylightArea') return GriddedSkylightArea.fromJS(item);\n else if (item?.type === 'GriddedSkylightRatio') return GriddedSkylightRatio.fromJS(item);\n else if (item?.type === 'DetailedSkylights') return DetailedSkylights.fromJS(item);\n else return item;\n })\n /** A SkylightParameter object describing how to generate skylights. If None, no skylights will exist on the Room2D. */\n skylightParameters?: (GriddedSkylightArea | GriddedSkylightRatio | DetailedSkylights);\n\t\n\n constructor() {\n super();\n this.type = \"Room2D\";\n this.isGroundContact = false;\n this.isTopExposed = false;\n this.hasFloor = true;\n this.hasCeiling = true;\n this.ceilingPlenumDepth = 0;\n this.floorPlenumDepth = 0;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2D, _data);\n this.floorBoundary = obj.floorBoundary;\n this.floorHeight = obj.floorHeight;\n this.floorToCeilingHeight = obj.floorToCeilingHeight;\n this.properties = obj.properties;\n this.type = obj.type ?? \"Room2D\";\n this.floorHoles = obj.floorHoles;\n this.isGroundContact = obj.isGroundContact ?? false;\n this.isTopExposed = obj.isTopExposed ?? false;\n this.hasFloor = obj.hasFloor ?? true;\n this.hasCeiling = obj.hasCeiling ?? true;\n this.ceilingPlenumDepth = obj.ceilingPlenumDepth ?? 0;\n this.floorPlenumDepth = obj.floorPlenumDepth ?? 0;\n this.zone = obj.zone;\n this.boundaryConditions = obj.boundaryConditions;\n this.windowParameters = obj.windowParameters;\n this.shadingParameters = obj.shadingParameters;\n this.airBoundaries = obj.airBoundaries;\n this.skylightParameters = obj.skylightParameters;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): Room2D {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2D();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"floor_boundary\"] = this.floorBoundary;\n data[\"floor_height\"] = this.floorHeight;\n data[\"floor_to_ceiling_height\"] = this.floorToCeilingHeight;\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"Room2D\";\n data[\"floor_holes\"] = this.floorHoles;\n data[\"is_ground_contact\"] = this.isGroundContact ?? false;\n data[\"is_top_exposed\"] = this.isTopExposed ?? false;\n data[\"has_floor\"] = this.hasFloor ?? true;\n data[\"has_ceiling\"] = this.hasCeiling ?? true;\n data[\"ceiling_plenum_depth\"] = this.ceilingPlenumDepth ?? 0;\n data[\"floor_plenum_depth\"] = this.floorPlenumDepth ?? 0;\n data[\"zone\"] = this.zone;\n data[\"boundary_conditions\"] = this.boundaryConditions;\n data[\"window_parameters\"] = this.windowParameters;\n data[\"shading_parameters\"] = this.shadingParameters;\n data[\"air_boundaries\"] = this.airBoundaries;\n data[\"skylight_parameters\"] = this.skylightParameters;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Several detailed skylights defined by 2D Polygons (lists of 2D vertices). */\nexport class DetailedSkylights extends _OpenAPIGenBaseModel {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"polygons\" })\n /** An array of arrays with each sub-array representing a polygonal boundary of a skylight. Each sub-array should consist of arrays representing points, which contain 2 values for 2D coordinates in the world XY system. These coordinate values should lie within the parent Room2D Polygon. */\n polygons!: number[][][];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"DetailedSkylights\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"DetailedSkylights\";\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"are_doors\" })\n /** An array of booleans that align with the polygons and note whether each of the polygons represents an overhead door (True) or a skylight (False). If None, it will be assumed that all polygons represent skylights and they will be translated to Apertures in any resulting Honeybee model. */\n areDoors?: boolean[];\n\t\n\n constructor() {\n super();\n this.type = \"DetailedSkylights\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(DetailedSkylights, _data);\n this.polygons = obj.polygons;\n this.type = obj.type ?? \"DetailedSkylights\";\n this.areDoors = obj.areDoors;\n }\n }\n\n\n static override fromJS(data: any): DetailedSkylights {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new DetailedSkylights();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"polygons\"] = this.polygons;\n data[\"type\"] = this.type ?? \"DetailedSkylights\";\n data[\"are_doors\"] = this.areDoors;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** Several detailed windows defined by 2D Polygons (lists of 2D vertices). */\nexport class DetailedWindows extends _WindowParameterBase {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"polygons\" })\n /** An array of arrays with each sub-array representing a polygonal boundary of a window. Each sub-array should consist of arrays representing points, which can either contain 2 values (indicating they are 2D vertices within the plane of a parent wall segment) or they can contain 3 values (indicating they are 3D world coordinates). For 2D points, the wall plane is assumed to have an origin at the first point of the wall segment and an X-axis extending along the length of the segment. The wall plane Y-axis always points upwards. Therefore, both X and Y values of each point in the polygon should always be positive. Some sample code to convert from 2D vertices to 2D vertices in the plane of the wall can be found here: https://www.ladybug.tools/dragonfly-core/docs/dragonfly.windowparameter.html#dragonfly.windowparameter.DetailedWindows */\n polygons!: number[][][];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"DetailedWindows\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"DetailedWindows\";\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"are_doors\" })\n /** An array of booleans that align with the polygons and note whether each of the polygons represents a door (True) or a window (False). If None, it will be assumed that all polygons represent windows and they will be translated to Apertures in any resulting Honeybee model. */\n areDoors?: boolean[];\n\t\n\n constructor() {\n super();\n this.type = \"DetailedWindows\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(DetailedWindows, _data);\n this.polygons = obj.polygons;\n this.type = obj.type ?? \"DetailedWindows\";\n this.areDoors = obj.areDoors;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): DetailedWindows {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new DetailedWindows();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"polygons\"] = this.polygons;\n data[\"type\"] = this.type ?? \"DetailedWindows\";\n data[\"are_doors\"] = this.areDoors;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Extruded borders over all windows in the wall. */\nexport class ExtrudedBorder extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"depth\" })\n /** A number for the depth of the border. */\n depth!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ExtrudedBorder\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ExtrudedBorder\";\n\t\n\n constructor() {\n super();\n this.type = \"ExtrudedBorder\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ExtrudedBorder, _data);\n this.depth = obj.depth;\n this.type = obj.type ?? \"ExtrudedBorder\";\n }\n }\n\n\n static override fromJS(data: any): ExtrudedBorder {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ExtrudedBorder();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"depth\"] = this.depth;\n data[\"type\"] = this.type ?? \"ExtrudedBorder\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Autocalculate } from \"honeybee-schema\";\n\n/** Gridded skylights defined by an absolute area. */\nexport class GriddedSkylightArea extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"skylight_area\" })\n /** A number for the skylight area in current model units. If this area is larger than the area of the roof that it is applied to, the skylight will fill the parent roof at a 99 percent ratio. */\n skylightArea!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"GriddedSkylightArea\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"GriddedSkylightArea\";\n\t\n @IsOptional()\n @Expose({ name: \"spacing\" })\n /** A number for the spacing between the centers of each grid cell. This should be less than a third of the dimension of the Roof geometry if multiple, evenly-spaced skylights are desired. If Autocalculate, a spacing of one third the smaller dimension of the parent Roof will be automatically assumed. */\n spacing: (Autocalculate | number) = new Autocalculate();\n\t\n\n constructor() {\n super();\n this.type = \"GriddedSkylightArea\";\n this.spacing = new Autocalculate();\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(GriddedSkylightArea, _data);\n this.skylightArea = obj.skylightArea;\n this.type = obj.type ?? \"GriddedSkylightArea\";\n this.spacing = obj.spacing ?? new Autocalculate();\n }\n }\n\n\n static override fromJS(data: any): GriddedSkylightArea {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new GriddedSkylightArea();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"skylight_area\"] = this.skylightArea;\n data[\"type\"] = this.type ?? \"GriddedSkylightArea\";\n data[\"spacing\"] = this.spacing ?? new Autocalculate();\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Autocalculate } from \"honeybee-schema\";\n\n/** Gridded skylights derived from an area ratio with the roof. */\nexport class GriddedSkylightRatio extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"skylight_ratio\" })\n /** A number between 0 and 1 for the ratio between the skylight area and the total Roof face area. */\n skylightRatio!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"GriddedSkylightRatio\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"GriddedSkylightRatio\";\n\t\n @IsOptional()\n @Expose({ name: \"spacing\" })\n /** A number for the spacing between the centers of each grid cell. This should be less than a third of the dimension of the Roof geometry if multiple, evenly-spaced skylights are desired. If Autocalculate, a spacing of one third the smaller dimension of the parent Roof will be automatically assumed. */\n spacing: (Autocalculate | number) = new Autocalculate();\n\t\n\n constructor() {\n super();\n this.type = \"GriddedSkylightRatio\";\n this.spacing = new Autocalculate();\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(GriddedSkylightRatio, _data);\n this.skylightRatio = obj.skylightRatio;\n this.type = obj.type ?? \"GriddedSkylightRatio\";\n this.spacing = obj.spacing ?? new Autocalculate();\n }\n }\n\n\n static override fromJS(data: any): GriddedSkylightRatio {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new GriddedSkylightRatio();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"skylight_ratio\"] = this.skylightRatio;\n data[\"type\"] = this.type ?? \"GriddedSkylightRatio\";\n data[\"spacing\"] = this.spacing ?? new Autocalculate();\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsInt, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _LouversBase } from \"./_LouversBase\";\n\n/** A specific number of louvered Shades over a wall. */\nexport class LouversByCount extends _LouversBase {\n @Type(() => Number)\n @IsInt()\n @IsDefined()\n @Expose({ name: \"louver_count\" })\n /** A positive integer for the number of louvers to generate. */\n louverCount!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"LouversByCount\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"LouversByCount\";\n\t\n\n constructor() {\n super();\n this.type = \"LouversByCount\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(LouversByCount, _data);\n this.louverCount = obj.louverCount;\n this.type = obj.type ?? \"LouversByCount\";\n this.depth = obj.depth;\n this.offset = obj.offset ?? 0;\n this.angle = obj.angle ?? 0;\n this.contourVector = obj.contourVector ?? [0, 1];\n this.flipStartSide = obj.flipStartSide ?? false;\n }\n }\n\n\n static override fromJS(data: any): LouversByCount {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new LouversByCount();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"louver_count\"] = this.louverCount;\n data[\"type\"] = this.type ?? \"LouversByCount\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _LouversBase } from \"./_LouversBase\";\n\n/** A series of louvered Shades at a given distance between each louver. */\nexport class LouversByDistance extends _LouversBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"distance\" })\n /** A number for the approximate distance between each louver. */\n distance!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"LouversByDistance\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"LouversByDistance\";\n\t\n\n constructor() {\n super();\n this.type = \"LouversByDistance\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(LouversByDistance, _data);\n this.distance = obj.distance;\n this.type = obj.type ?? \"LouversByDistance\";\n this.depth = obj.depth;\n this.offset = obj.offset ?? 0;\n this.angle = obj.angle ?? 0;\n this.contourVector = obj.contourVector ?? [0, 1];\n this.flipStartSide = obj.flipStartSide ?? false;\n }\n }\n\n\n static override fromJS(data: any): LouversByDistance {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new LouversByDistance();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"distance\"] = this.distance;\n data[\"type\"] = this.type ?? \"LouversByDistance\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, Min, Max, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** A single overhang over an entire wall. */\nexport class Overhang extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"depth\" })\n /** A number for the overhang depth. */\n depth!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Overhang\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Overhang\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(-90)\n @Max(90)\n @Expose({ name: \"angle\" })\n /** A number between -90 and 90 for the for an angle to rotate the overhang in degrees. 0 indicates an overhang perpendicular to the wall. Positive values indicate a downward rotation. Negative values indicate an upward rotation. */\n angle: number = 0;\n\t\n\n constructor() {\n super();\n this.type = \"Overhang\";\n this.angle = 0;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Overhang, _data);\n this.depth = obj.depth;\n this.type = obj.type ?? \"Overhang\";\n this.angle = obj.angle ?? 0;\n }\n }\n\n\n static override fromJS(data: any): Overhang {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Overhang();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"depth\"] = this.depth;\n data[\"type\"] = this.type ?? \"Overhang\";\n data[\"angle\"] = this.angle ?? 0;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsNumber, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** Several rectangular windows, defined by origin, width and height. */\nexport class RectangularWindows extends _WindowParameterBase {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"origins\" })\n /** An array of 2D points within the plane of the wall for the origin of each window. Each point should be a list of 2 (x, y) values. The wall plane is assumed to have an origin at the first point of the wall segment and an X-axis extending along the length of the segment. The wall plane Y-axis always points upwards. Therefore, both X and Y values of each origin point should be positive. */\n origins!: number[][];\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsDefined()\n @Expose({ name: \"widths\" })\n /** An array of positive numbers for the window widths. The length of this list must match the length of the origins. */\n widths!: number[];\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsDefined()\n @Expose({ name: \"heights\" })\n /** An array of positive numbers for the window heights. The length of this list must match the length of the origins. */\n heights!: number[];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RectangularWindows\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RectangularWindows\";\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"are_doors\" })\n /** An array of booleans that align with the origins and note whether each of the geometries represents a door (True) or a window (False). If None, it will be assumed that all geometries represent windows and they will be translated to Apertures in any resulting Honeybee model. */\n areDoors?: boolean[];\n\t\n\n constructor() {\n super();\n this.type = \"RectangularWindows\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RectangularWindows, _data);\n this.origins = obj.origins;\n this.widths = obj.widths;\n this.heights = obj.heights;\n this.type = obj.type ?? \"RectangularWindows\";\n this.areDoors = obj.areDoors;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): RectangularWindows {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RectangularWindows();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"origins\"] = this.origins;\n data[\"widths\"] = this.widths;\n data[\"heights\"] = this.heights;\n data[\"type\"] = this.type ?? \"RectangularWindows\";\n data[\"are_doors\"] = this.areDoors;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, Min, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** Repeating windows derived from an area ratio with the base wall. */\nexport class RepeatingWindowRatio extends _WindowParameterBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"window_ratio\" })\n /** A number between 0 and 1 for the ratio between the window area and the parent wall surface area. */\n windowRatio!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"window_height\" })\n /** A number for the target height of the windows. Note that, if the window ratio is too large for the height, the ratio will take precedence and the actual window_height will be larger than this value. */\n windowHeight!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"sill_height\" })\n /** A number for the target height above the bottom edge of the wall to start the windows. Note that, if the ratio is too large for the height, the ratio will take precedence and the sill_height will be smaller than this value. */\n sillHeight!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Min(0)\n @Expose({ name: \"horizontal_separation\" })\n /** A number for the target separation between individual window center lines. If this number is larger than the parent rectangle base, only one window will be produced. */\n horizontalSeparation!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RepeatingWindowRatio\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RepeatingWindowRatio\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"vertical_separation\" })\n /** An optional number to create a single vertical separation between top and bottom windows. */\n verticalSeparation: number = 0;\n\t\n\n constructor() {\n super();\n this.type = \"RepeatingWindowRatio\";\n this.verticalSeparation = 0;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RepeatingWindowRatio, _data);\n this.windowRatio = obj.windowRatio;\n this.windowHeight = obj.windowHeight;\n this.sillHeight = obj.sillHeight;\n this.horizontalSeparation = obj.horizontalSeparation;\n this.type = obj.type ?? \"RepeatingWindowRatio\";\n this.verticalSeparation = obj.verticalSeparation ?? 0;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): RepeatingWindowRatio {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RepeatingWindowRatio();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"window_ratio\"] = this.windowRatio;\n data[\"window_height\"] = this.windowHeight;\n data[\"sill_height\"] = this.sillHeight;\n data[\"horizontal_separation\"] = this.horizontalSeparation;\n data[\"type\"] = this.type ?? \"RepeatingWindowRatio\";\n data[\"vertical_separation\"] = this.verticalSeparation ?? 0;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Room2DComparisonProperties } from \"./Room2DComparisonProperties\";\nimport { Room2DDoe2Properties } from \"./Room2DDoe2Properties\";\nimport { Room2DEnergyPropertiesAbridged } from \"./Room2DEnergyPropertiesAbridged\";\nimport { Room2DRadiancePropertiesAbridged } from \"./Room2DRadiancePropertiesAbridged\";\n\nexport class Room2DPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DPropertiesAbridged\";\n\t\n @Type(() => Room2DEnergyPropertiesAbridged)\n @IsInstance(Room2DEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: Room2DEnergyPropertiesAbridged;\n\t\n @Type(() => Room2DRadiancePropertiesAbridged)\n @IsInstance(Room2DRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: Room2DRadiancePropertiesAbridged;\n\t\n @Type(() => Room2DDoe2Properties)\n @IsInstance(Room2DDoe2Properties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"doe2\" })\n /** doe2 */\n doe2?: Room2DDoe2Properties;\n\t\n @Type(() => Room2DComparisonProperties)\n @IsInstance(Room2DComparisonProperties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"comparison\" })\n /** comparison */\n comparison?: Room2DComparisonProperties;\n\t\n\n constructor() {\n super();\n this.type = \"Room2DPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DPropertiesAbridged, _data);\n this.type = obj.type ?? \"Room2DPropertiesAbridged\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n this.doe2 = obj.doe2;\n this.comparison = obj.comparison;\n }\n }\n\n\n static override fromJS(data: any): Room2DPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DPropertiesAbridged\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data[\"doe2\"] = this.doe2;\n data[\"comparison\"] = this.comparison;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { DetailedSkylights } from \"./DetailedSkylights\";\nimport { DetailedWindows } from \"./DetailedWindows\";\nimport { GriddedSkylightArea } from \"./GriddedSkylightArea\";\nimport { GriddedSkylightRatio } from \"./GriddedSkylightRatio\";\nimport { RectangularWindows } from \"./RectangularWindows\";\nimport { RepeatingWindowRatio } from \"./RepeatingWindowRatio\";\nimport { SimpleWindowArea } from \"./SimpleWindowArea\";\nimport { SimpleWindowRatio } from \"./SimpleWindowRatio\";\nimport { SingleWindow } from \"./SingleWindow\";\n\nexport class Room2DComparisonProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DComparisonProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DComparisonProperties\";\n\t\n @IsArray()\n @IsNestedNumberArray()\n @IsOptional()\n @Expose({ name: \"floor_boundary\" })\n /** A list of 2D points representing the outer boundary vertices of the Room2D to which the host Room2D is being compared. The list should include at least 3 points and each point should be a list of 2 (x, y) values. */\n floorBoundary?: number[][];\n\t\n @IsArray()\n @IsNestedNumberArray()\n @IsOptional()\n @Expose({ name: \"floor_holes\" })\n /** Optional list of lists with one list for each hole in the floor plate of the Room2D to which the host Room2D is being compared. Each hole should be a list of at least 2 points and each point a list of 2 (x, y) values. If None, it will be assumed that there are no holes in the floor plate. */\n floorHoles?: number[][][];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"comparison_windows\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'SingleWindow') return SingleWindow.fromJS(item);\n else if (item?.type === 'SimpleWindowArea') return SimpleWindowArea.fromJS(item);\n else if (item?.type === 'SimpleWindowRatio') return SimpleWindowRatio.fromJS(item);\n else if (item?.type === 'RepeatingWindowRatio') return RepeatingWindowRatio.fromJS(item);\n else if (item?.type === 'RectangularWindows') return RectangularWindows.fromJS(item);\n else if (item?.type === 'DetailedWindows') return DetailedWindows.fromJS(item);\n else return item;\n }))\n /** A list of WindowParameter objects that dictate the window geometries of the Room2D to which the host Room2D is being compared. */\n comparisonWindows?: (SingleWindow | SimpleWindowArea | SimpleWindowRatio | RepeatingWindowRatio | RectangularWindows | DetailedWindows)[];\n\t\n @IsOptional()\n @Expose({ name: \"comparison_skylight\" })\n @Transform(({ value }) => {\n const item = value;\n if (item?.type === 'GriddedSkylightArea') return GriddedSkylightArea.fromJS(item);\n else if (item?.type === 'GriddedSkylightRatio') return GriddedSkylightRatio.fromJS(item);\n else if (item?.type === 'DetailedSkylights') return DetailedSkylights.fromJS(item);\n else return item;\n })\n /** A SkylightParameter object for the Room2D to which the host Room2D is being compared. */\n comparisonSkylight?: (GriddedSkylightArea | GriddedSkylightRatio | DetailedSkylights);\n\t\n\n constructor() {\n super();\n this.type = \"Room2DComparisonProperties\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DComparisonProperties, _data);\n this.type = obj.type ?? \"Room2DComparisonProperties\";\n this.floorBoundary = obj.floorBoundary;\n this.floorHoles = obj.floorHoles;\n this.comparisonWindows = obj.comparisonWindows;\n this.comparisonSkylight = obj.comparisonSkylight;\n }\n }\n\n\n static override fromJS(data: any): Room2DComparisonProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DComparisonProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DComparisonProperties\";\n data[\"floor_boundary\"] = this.floorBoundary;\n data[\"floor_holes\"] = this.floorHoles;\n data[\"comparison_windows\"] = this.comparisonWindows;\n data[\"comparison_skylight\"] = this.comparisonSkylight;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** A single window defined by an absolute area. */\nexport class SimpleWindowArea extends _WindowParameterBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"window_area\" })\n /** A number for the window area in current model units. If this area is larger than the area of the Wall that it is appliedto, the window will fill the parent Wall at a 99 percent ratio. */\n windowArea!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"SimpleWindowArea\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"SimpleWindowArea\";\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"rect_split\" })\n /** Boolean to note whether rectangular portions of base Face should be extracted before scaling them to create apertures. For pentagonal gabled geometries, this results in one rectangle and one triangle, which can often look more realistic and is a better input for engines like EnergyPlus that cannot model windows with more than 4 vertices. However, if a single pentagonal window is desired for such a gabled shape, this input can be set to False to produce such a result. */\n rectSplit: boolean = true;\n\t\n\n constructor() {\n super();\n this.type = \"SimpleWindowArea\";\n this.rectSplit = true;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(SimpleWindowArea, _data);\n this.windowArea = obj.windowArea;\n this.type = obj.type ?? \"SimpleWindowArea\";\n this.rectSplit = obj.rectSplit ?? true;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): SimpleWindowArea {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new SimpleWindowArea();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"window_area\"] = this.windowArea;\n data[\"type\"] = this.type ?? \"SimpleWindowArea\";\n data[\"rect_split\"] = this.rectSplit ?? true;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** A single window defined by an area ratio with the base surface. */\nexport class SimpleWindowRatio extends _WindowParameterBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"window_ratio\" })\n /** A number between 0 and 1 for the ratio between the window area and the parent wall surface area. */\n windowRatio!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"SimpleWindowRatio\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"SimpleWindowRatio\";\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"rect_split\" })\n /** Boolean to note whether rectangular portions of base Face should be extracted before scaling them to create apertures. For pentagonal gabled geometries, this results in one rectangle and one triangle, which can often look more realistic and is a better input for engines like EnergyPlus that cannot model windows with more than 4 vertices. However, if a single pentagonal window is desired for such a gabled shape, this input can be set to False to produce such a result. */\n rectSplit: boolean = true;\n\t\n\n constructor() {\n super();\n this.type = \"SimpleWindowRatio\";\n this.rectSplit = true;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(SimpleWindowRatio, _data);\n this.windowRatio = obj.windowRatio;\n this.type = obj.type ?? \"SimpleWindowRatio\";\n this.rectSplit = obj.rectSplit ?? true;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): SimpleWindowRatio {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new SimpleWindowRatio();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"window_ratio\"] = this.windowRatio;\n data[\"type\"] = this.type ?? \"SimpleWindowRatio\";\n data[\"rect_split\"] = this.rectSplit ?? true;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** A single window in the wall center defined by a width * height. */\nexport class SingleWindow extends _WindowParameterBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"width\" })\n /** A number for the window width. Note that, if this width is applied to a wall that is too narrow for this width, the generated window will automatically be shortened when it is applied to the wall. In this way, setting the width to be `float(\"\"inf\"\")` will create parameters that always generate a ribbon window. */\n width!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"height\" })\n /** A number for the window height. Note that, if this height is applied to a wall that is too short for this height, the generated window will automatically be shortened when it is applied to the wall. */\n height!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"SingleWindow\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"SingleWindow\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"sill_height\" })\n /** A number for the window sill height. */\n sillHeight: number = 1;\n\t\n\n constructor() {\n super();\n this.type = \"SingleWindow\";\n this.sillHeight = 1;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(SingleWindow, _data);\n this.width = obj.width;\n this.height = obj.height;\n this.type = obj.type ?? \"SingleWindow\";\n this.sillHeight = obj.sillHeight ?? 1;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): SingleWindow {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new SingleWindow();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"width\"] = this.width;\n data[\"height\"] = this.height;\n data[\"type\"] = this.type ?? \"SingleWindow\";\n data[\"sill_height\"] = this.sillHeight ?? 1;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Autocalculate } from \"honeybee-schema\";\n\nexport class Room2DDoe2Properties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DDoe2Properties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DDoe2Properties\";\n\t\n @IsOptional()\n @Expose({ name: \"assigned_flow\" })\n /** A number for the design supply air flow rate for the zone the Room is assigned to (cfm). This establishes the minimum allowed design air flow. Note that the actual design flow may be larger. If Autocalculate, this parameter will not be written into the INP. */\n assignedFlow: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"flow_per_area\" })\n /** A number for the design supply air flow rate to the zone per unit floor area (cfm/ft2). If Autocalculate, this parameter will not be written into the INP. */\n flowPerArea: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"min_flow_ratio\" })\n /** A number between 0 and 1 for the minimum allowable zone air supply flow rate, expressed as a fraction of design flow rate. Applicable to variable-volume type systems only. If Autocalculate, this parameter will not be written into the INP. */\n minFlowRatio: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"min_flow_per_area\" })\n /** A number for the minimum air flow per square foot of floor area (cfm/ft2). This is an alternative way of specifying the min_flow_ratio. If Autocalculate, this parameter will not be written into the INP. */\n minFlowPerArea: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"hmax_flow_ratio\" })\n /** A number between 0 and 1 for the ratio of the maximum (or fixed) heating airflow to the cooling airflow. The specific meaning varies according to the type of zone terminal. If Autocalculate, this parameter will not be written into the INP. */\n hmaxFlowRatio: (Autocalculate | number) = new Autocalculate();\n\t\n\n constructor() {\n super();\n this.type = \"Room2DDoe2Properties\";\n this.assignedFlow = new Autocalculate();\n this.flowPerArea = new Autocalculate();\n this.minFlowRatio = new Autocalculate();\n this.minFlowPerArea = new Autocalculate();\n this.hmaxFlowRatio = new Autocalculate();\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DDoe2Properties, _data);\n this.type = obj.type ?? \"Room2DDoe2Properties\";\n this.assignedFlow = obj.assignedFlow ?? new Autocalculate();\n this.flowPerArea = obj.flowPerArea ?? new Autocalculate();\n this.minFlowRatio = obj.minFlowRatio ?? new Autocalculate();\n this.minFlowPerArea = obj.minFlowPerArea ?? new Autocalculate();\n this.hmaxFlowRatio = obj.hmaxFlowRatio ?? new Autocalculate();\n }\n }\n\n\n static override fromJS(data: any): Room2DDoe2Properties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DDoe2Properties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DDoe2Properties\";\n data[\"assigned_flow\"] = this.assignedFlow ?? new Autocalculate();\n data[\"flow_per_area\"] = this.flowPerArea ?? new Autocalculate();\n data[\"min_flow_ratio\"] = this.minFlowRatio ?? new Autocalculate();\n data[\"min_flow_per_area\"] = this.minFlowPerArea ?? new Autocalculate();\n data[\"hmax_flow_ratio\"] = this.hmaxFlowRatio ?? new Autocalculate();\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, MinLength, MaxLength, IsNumber, Min, IsArray, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { DaylightingControl } from \"honeybee-schema\";\nimport { ProcessAbridged } from \"honeybee-schema\";\nimport { VentilationControlAbridged } from \"honeybee-schema\";\nimport { VentilationFan } from \"honeybee-schema\";\nimport { VentilationOpening } from \"honeybee-schema\";\n\nexport class Room2DEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DEnergyPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DEnergyPropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"construction_set\" })\n /** Name of a ConstructionSet to specify all constructions for the Room2D. If None, the Room2D will use the Story or Building construction_set or the Model global_construction_set. Any ConstructionSet assigned here will override those assigned to these objects. */\n constructionSet?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"program_type\" })\n /** Name of a ProgramType to specify all schedules and loads for the Room2D. If None, the Room2D will have no loads or setpoints. */\n programType?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"hvac\" })\n /** An optional identifier of a HVAC system (such as an IdealAirSystem) that specifies how the Room2D is conditioned. If None, it will be assumed that the Room2D is not conditioned. */\n hvac?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"shw\" })\n /** An optional identifier of a Service Hot Water (SHW) system that specifies how the hot water load of the Room is met. If None, the hot water load will be met with a generic system that only measures thermal loadand does not account for system efficiencies. */\n shw?: string;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"person_count\" })\n /** Number for the total number of people in the room or an Unassigned object to indicate that people are assigned via the program_type. */\n personCount?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"lighting_watts\" })\n /** Number for the total wattage of lighting in the room or an Unassigned object to indicate that lighting is assigned via the program_type. */\n lightingWatts?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"electric_equipment_watts\" })\n /** Number for the total wattage of electric equipment in the room or an Unassigned object to indicate that electric equipment is assigned via the program_type. */\n electricEquipmentWatts?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"gas_equipment_watts\" })\n /** Number for the total wattage of gas equipment in the room or an Unassigned object to indicate that gas equipment is assigned via the program_type. */\n gasEquipmentWatts?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"hot_water_flow\" })\n /** Number for the total flow of hot water in the room or an Unassigned object to indicate that service hot water is assigned via the program_type. */\n hotWaterFlow?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"infiltration_ach\" })\n /** Number for the infiltration of the room in air changes per hour or an Unassigned object to indicate that infiltration is assigned via the program_type. */\n infiltrationAch?: number;\n\t\n @IsArray()\n @Type(() => ProcessAbridged)\n @IsInstance(ProcessAbridged, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"process_loads\" })\n /** An optional list of Process objects for process loads within the room. These can represent wood burning fireplaces, kilns, manufacturing equipment, and various industrial processes. They can also be used to represent certain pieces of equipment to be separated from the other end uses, such as MRI machines, theatrical lighting, and elevators. */\n processLoads?: ProcessAbridged[];\n\t\n @Type(() => DaylightingControl)\n @IsInstance(DaylightingControl)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"daylighting_control\" })\n /** An optional DaylightingControl object to dictate the dimming of lights. If None, the lighting will respond only to the schedule and not the daylight conditions within the room. */\n daylightingControl?: DaylightingControl;\n\t\n @Type(() => VentilationControlAbridged)\n @IsInstance(VentilationControlAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"window_vent_control\" })\n /** An optional VentilationControl object to dictate the opening of windows. If None, the windows will never open. */\n windowVentControl?: VentilationControlAbridged;\n\t\n @Type(() => VentilationOpening)\n @IsInstance(VentilationOpening)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"window_vent_opening\" })\n /** An optional VentilationOpening to specify the operable portion of all windows of the Room2D. If None, the windows will never open. */\n windowVentOpening?: VentilationOpening;\n\t\n @IsArray()\n @Type(() => VentilationFan)\n @IsInstance(VentilationFan, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"fans\" })\n /** An optional list of VentilationFan objects for fans within the room. Note that these fans are not connected to the heating or cooling system and are meant to represent the intentional circulation of unconditioned outdoor air for the purposes of keeping a space cooler, drier or free of indoor pollutants (as in the case of kitchen or bathroom exhaust fans). For the specification of mechanical ventilation of conditioned outdoor air, the Room.ventilation property should be used and the Room should be given a HVAC that can meet this specification. */\n fans?: VentilationFan[];\n\t\n\n constructor() {\n super();\n this.type = \"Room2DEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DEnergyPropertiesAbridged, _data);\n this.type = obj.type ?? \"Room2DEnergyPropertiesAbridged\";\n this.constructionSet = obj.constructionSet;\n this.programType = obj.programType;\n this.hvac = obj.hvac;\n this.shw = obj.shw;\n this.personCount = obj.personCount;\n this.lightingWatts = obj.lightingWatts;\n this.electricEquipmentWatts = obj.electricEquipmentWatts;\n this.gasEquipmentWatts = obj.gasEquipmentWatts;\n this.hotWaterFlow = obj.hotWaterFlow;\n this.infiltrationAch = obj.infiltrationAch;\n this.processLoads = obj.processLoads;\n this.daylightingControl = obj.daylightingControl;\n this.windowVentControl = obj.windowVentControl;\n this.windowVentOpening = obj.windowVentOpening;\n this.fans = obj.fans;\n }\n }\n\n\n static override fromJS(data: any): Room2DEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DEnergyPropertiesAbridged\";\n data[\"construction_set\"] = this.constructionSet;\n data[\"program_type\"] = this.programType;\n data[\"hvac\"] = this.hvac;\n data[\"shw\"] = this.shw;\n data[\"person_count\"] = this.personCount;\n data[\"lighting_watts\"] = this.lightingWatts;\n data[\"electric_equipment_watts\"] = this.electricEquipmentWatts;\n data[\"gas_equipment_watts\"] = this.gasEquipmentWatts;\n data[\"hot_water_flow\"] = this.hotWaterFlow;\n data[\"infiltration_ach\"] = this.infiltrationAch;\n data[\"process_loads\"] = this.processLoads;\n data[\"daylighting_control\"] = this.daylightingControl;\n data[\"window_vent_control\"] = this.windowVentControl;\n data[\"window_vent_opening\"] = this.windowVentOpening;\n data[\"fans\"] = this.fans;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ExteriorApertureGridParameter } from \"./ExteriorApertureGridParameter\";\nimport { ExteriorFaceGridParameter } from \"./ExteriorFaceGridParameter\";\nimport { RoomGridParameter } from \"./RoomGridParameter\";\nimport { RoomRadialGridParameter } from \"./RoomRadialGridParameter\";\n\nexport class Room2DRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DRadiancePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DRadiancePropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"modifier_set\" })\n /** Identifier of a ModifierSet to specify all modifiers for the Room2D. If None, the Room2D will use the Story or Building modifier_set or the Model global_modifier_set. Any ModifierSet assigned here will override those assigned to the parent objects. */\n modifierSet?: string;\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"grid_parameters\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'RoomGridParameter') return RoomGridParameter.fromJS(item);\n else if (item?.type === 'RoomRadialGridParameter') return RoomRadialGridParameter.fromJS(item);\n else if (item?.type === 'ExteriorFaceGridParameter') return ExteriorFaceGridParameter.fromJS(item);\n else if (item?.type === 'ExteriorApertureGridParameter') return ExteriorApertureGridParameter.fromJS(item);\n else return item;\n }))\n /** An optional list of GridParameter objects to describe how sensor grids should be generated for the Room2D. */\n gridParameters?: (RoomGridParameter | RoomRadialGridParameter | ExteriorFaceGridParameter | ExteriorApertureGridParameter)[];\n\t\n\n constructor() {\n super();\n this.type = \"Room2DRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DRadiancePropertiesAbridged, _data);\n this.type = obj.type ?? \"Room2DRadiancePropertiesAbridged\";\n this.modifierSet = obj.modifierSet;\n this.gridParameters = obj.gridParameters;\n }\n }\n\n\n static override fromJS(data: any): Room2DRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DRadiancePropertiesAbridged\";\n data[\"modifier_set\"] = this.modifierSet;\n data[\"grid_parameters\"] = this.gridParameters;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsNumber, IsEnum, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _GridParameterBase } from \"./_GridParameterBase\";\nimport { ExteriorApertureType } from \"./ExteriorApertureType\";\n\n/** Instructions for a SensorGrid generated from exterior Aperture. */\nexport class ExteriorApertureGridParameter extends _GridParameterBase {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ExteriorApertureGridParameter\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ExteriorApertureGridParameter\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"offset\" })\n /** A number for how far to offset the grid from the Apertures. (Default: 0.1, suitable for Models in Meters). */\n offset: number = 0.1;\n\t\n @Type(() => String)\n @IsEnum(ExteriorApertureType)\n @IsOptional()\n @Expose({ name: \"aperture_type\" })\n /** Text to specify the type of Aperture that will be used to generate grids. Window indicates Apertures in Walls. Skylights are in parent Roof faces. */\n apertureType: ExteriorApertureType = ExteriorApertureType.All;\n\t\n\n constructor() {\n super();\n this.type = \"ExteriorApertureGridParameter\";\n this.offset = 0.1;\n this.apertureType = ExteriorApertureType.All;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ExteriorApertureGridParameter, _data);\n this.type = obj.type ?? \"ExteriorApertureGridParameter\";\n this.offset = obj.offset ?? 0.1;\n this.apertureType = obj.apertureType ?? ExteriorApertureType.All;\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n }\n }\n\n\n static override fromJS(data: any): ExteriorApertureGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ExteriorApertureGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ExteriorApertureGridParameter\";\n data[\"offset\"] = this.offset ?? 0.1;\n data[\"aperture_type\"] = this.apertureType ?? ExteriorApertureType.All;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum ExteriorApertureType {\n Window = \"Window\",\n Skylight = \"Skylight\",\n All = \"All\",\n}","import { IsString, IsOptional, Equals, IsNumber, IsEnum, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _GridParameterBase } from \"./_GridParameterBase\";\nimport { ExteriorFaceType } from \"./ExteriorFaceType\";\n\n/** Instructions for a SensorGrid generated from exterior Faces. */\nexport class ExteriorFaceGridParameter extends _GridParameterBase {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ExteriorFaceGridParameter\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ExteriorFaceGridParameter\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"offset\" })\n /** A number for how far to offset the grid from the Faces. (Default: 0.1, suitable for Models in Meters). */\n offset: number = 0.1;\n\t\n @Type(() => String)\n @IsEnum(ExteriorFaceType)\n @IsOptional()\n @Expose({ name: \"face_type\" })\n /** Text to specify the type of face that will be used to generate grids. Note that only Faces with Outdoors boundary conditions will be used, meaning that most Floors will typically be excluded unless they represent the underside of a cantilever. */\n faceType: ExteriorFaceType = ExteriorFaceType.Wall;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"punched_geometry\" })\n /** A boolean to note whether the punched_geometry of the faces should be used (True) with the areas of sub-faces removed from the grid or the full geometry should be used (False). */\n punchedGeometry: boolean = false;\n\t\n\n constructor() {\n super();\n this.type = \"ExteriorFaceGridParameter\";\n this.offset = 0.1;\n this.faceType = ExteriorFaceType.Wall;\n this.punchedGeometry = false;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ExteriorFaceGridParameter, _data);\n this.type = obj.type ?? \"ExteriorFaceGridParameter\";\n this.offset = obj.offset ?? 0.1;\n this.faceType = obj.faceType ?? ExteriorFaceType.Wall;\n this.punchedGeometry = obj.punchedGeometry ?? false;\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n }\n }\n\n\n static override fromJS(data: any): ExteriorFaceGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ExteriorFaceGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ExteriorFaceGridParameter\";\n data[\"offset\"] = this.offset ?? 0.1;\n data[\"face_type\"] = this.faceType ?? ExteriorFaceType.Wall;\n data[\"punched_geometry\"] = this.punchedGeometry ?? false;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum ExteriorFaceType {\n Wall = \"Wall\",\n Roof = \"Roof\",\n Floor = \"Floor\",\n All = \"All\",\n}","import { IsString, IsOptional, Equals, IsNumber, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _GridParameterBase } from \"./_GridParameterBase\";\n\n/** Instructions for a SensorGrid generated from a Room2D's floors. */\nexport class RoomGridParameter extends _GridParameterBase {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RoomGridParameter\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RoomGridParameter\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"offset\" })\n /** A number for how far to offset the grid from the Room2D floors. (Default: 1.0, suitable for Models in Meters). */\n offset: number = 1;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"wall_offset\" })\n /** A number for the distance at which sensors close to walls should be removed. Note that this option has no effect unless the value is more than half of the dimension. */\n wallOffset: number = 0;\n\t\n\n constructor() {\n super();\n this.type = \"RoomGridParameter\";\n this.offset = 1;\n this.wallOffset = 0;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RoomGridParameter, _data);\n this.type = obj.type ?? \"RoomGridParameter\";\n this.offset = obj.offset ?? 1;\n this.wallOffset = obj.wallOffset ?? 0;\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n }\n }\n\n\n static override fromJS(data: any): RoomGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RoomGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"RoomGridParameter\";\n data[\"offset\"] = this.offset ?? 1;\n data[\"wall_offset\"] = this.wallOffset ?? 0;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsInt, IsOptional, IsArray, IsNumber, IsString, Equals, IsDefined, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { Autocalculate } from \"honeybee-schema\";\n\n/** Instructions for a SensorGrid of radial directions around positions from floors.\\n\\nThis type of sensor grid is particularly helpful for studies of multiple\\nview directions, such as imageless glare studies. */\nexport class RoomRadialGridParameter {\n @Type(() => Number)\n @IsInt()\n @IsOptional()\n @Expose({ name: \"dir_count\" })\n /** A positive integer for the number of radial directions to be generated around each position. */\n dirCount: number = 8;\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsOptional()\n @Expose({ name: \"start_vector\" })\n /** A vector as 3 (x, y, z) values to set the start direction of the generated directions. This can be used to orient the resulting sensors to specific parts of the scene. It can also change the elevation of the resulting directions since this start vector will always be rotated in the XY plane to generate the resulting directions. */\n startVector?: number[];\n\t\n @IsOptional()\n @Expose({ name: \"mesh_radius\" })\n /** An optional number to override the radius of the meshes generated around each sensor. If Autocalculate, it will be equal to 45 percent of the grid dimension. */\n meshRadius: (Autocalculate | number) = new Autocalculate();\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RoomRadialGridParameter\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RoomRadialGridParameter\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"offset\" })\n /** A number for how far to offset the grid from the Room2D floors. (Default: 1.0, suitable for Models in Meters). */\n offset: number = 1;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"wall_offset\" })\n /** A number for the distance at which sensors close to walls should be removed. Note that this option has no effect unless the value is more than half of the dimension. */\n wallOffset: number = 0;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"dimension\" })\n /** The dimension of the grid cells as a number. */\n dimension!: number;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"include_mesh\" })\n /** A boolean to note whether the resulting SensorGrid should include the mesh. */\n includeMesh: boolean = true;\n\t\n\n constructor() {\n this.dirCount = 8;\n this.meshRadius = new Autocalculate();\n this.type = \"RoomRadialGridParameter\";\n this.offset = 1;\n this.wallOffset = 0;\n this.includeMesh = true;\n }\n\n\n init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RoomRadialGridParameter, _data);\n this.dirCount = obj.dirCount ?? 8;\n this.startVector = obj.startVector;\n this.meshRadius = obj.meshRadius ?? new Autocalculate();\n this.type = obj.type ?? \"RoomRadialGridParameter\";\n this.offset = obj.offset ?? 1;\n this.wallOffset = obj.wallOffset ?? 0;\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n }\n }\n\n\n static fromJS(data: any): RoomRadialGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RoomRadialGridParameter();\n result.init(data);\n return result;\n }\n\n\ttoJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dir_count\"] = this.dirCount ?? 8;\n data[\"start_vector\"] = this.startVector;\n data[\"mesh_radius\"] = this.meshRadius ?? new Autocalculate();\n data[\"type\"] = this.type ?? \"RoomRadialGridParameter\";\n data[\"offset\"] = this.offset ?? 1;\n data[\"wall_offset\"] = this.wallOffset ?? 0;\n data[\"dimension\"] = this.dimension;\n data[\"include_mesh\"] = this.includeMesh ?? true;\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { StoryEnergyPropertiesAbridged } from \"./StoryEnergyPropertiesAbridged\";\nimport { StoryRadiancePropertiesAbridged } from \"./StoryRadiancePropertiesAbridged\";\n\nexport class StoryPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"StoryPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"StoryPropertiesAbridged\";\n\t\n @Type(() => StoryEnergyPropertiesAbridged)\n @IsInstance(StoryEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: StoryEnergyPropertiesAbridged;\n\t\n @Type(() => StoryRadiancePropertiesAbridged)\n @IsInstance(StoryRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: StoryRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"StoryPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(StoryPropertiesAbridged, _data);\n this.type = obj.type ?? \"StoryPropertiesAbridged\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): StoryPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new StoryPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"StoryPropertiesAbridged\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, MinLength, MaxLength, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class StoryEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"StoryEnergyPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"StoryEnergyPropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"construction_set\" })\n /** Name of a ConstructionSet to specify all constructions for the Story. If None, the Story will use the Building construction_set or the Model global_construction_set. Any ConstructionSet assigned here will override those assigned to these objects. */\n constructionSet?: string;\n\t\n\n constructor() {\n super();\n this.type = \"StoryEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(StoryEnergyPropertiesAbridged, _data);\n this.type = obj.type ?? \"StoryEnergyPropertiesAbridged\";\n this.constructionSet = obj.constructionSet;\n }\n }\n\n\n static override fromJS(data: any): StoryEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new StoryEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"StoryEnergyPropertiesAbridged\";\n data[\"construction_set\"] = this.constructionSet;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class StoryRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"StoryRadiancePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"StoryRadiancePropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"modifier_set\" })\n /** Name of a ModifierSet to specify all modifiers for the Story. If None, the Story will use the Building modifier_set or the Model global_modifier_set. Any ModifierSet assigned here will override those assigned to the parent objects. */\n modifierSet?: string;\n\t\n\n constructor() {\n super();\n this.type = \"StoryRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(StoryRadiancePropertiesAbridged, _data);\n this.type = obj.type ?? \"StoryRadiancePropertiesAbridged\";\n this.modifierSet = obj.modifierSet;\n }\n }\n\n\n static override fromJS(data: any): StoryRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new StoryRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"StoryRadiancePropertiesAbridged\";\n data[\"modifier_set\"] = this.modifierSet;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum StoryType {\n Standard = \"Standard\",\n CeilingPlenum = \"CeilingPlenum\",\n FloorPlenum = \"FloorPlenum\",\n}","import { IsArray, IsDefined, IsInstance, ValidateNested, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { ContextShadePropertiesAbridged } from \"./ContextShadePropertiesAbridged\";\nimport { Face3D } from \"honeybee-schema\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { Mesh3D } from \"honeybee-schema\";\n\nexport class ContextShade extends IDdBaseModel {\n @IsArray()\n @IsDefined()\n @Expose({ name: \"geometry\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'Face3D') return Face3D.fromJS(item);\n else if (item?.type === 'Mesh3D') return Mesh3D.fromJS(item);\n else return item;\n }))\n /** An array of planar Face3Ds and or Mesh3Ds that together represent the context shade. */\n geometry!: (Face3D | Mesh3D)[];\n\t\n @Type(() => ContextShadePropertiesAbridged)\n @IsInstance(ContextShadePropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: ContextShadePropertiesAbridged;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ContextShade\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ContextShade\";\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"is_detached\" })\n /** Boolean to note whether this shade is detached from any of the other geometry in the model. Cases where this should be True include shade representing surrounding buildings or context. */\n isDetached: boolean = true;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShade\";\n this.isDetached = true;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ContextShade, _data);\n this.geometry = obj.geometry;\n this.properties = obj.properties;\n this.type = obj.type ?? \"ContextShade\";\n this.isDetached = obj.isDetached ?? true;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): ContextShade {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShade();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"geometry\"] = this.geometry;\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"ContextShade\";\n data[\"is_detached\"] = this.isDetached ?? true;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ContextShadeEnergyPropertiesAbridged } from \"./ContextShadeEnergyPropertiesAbridged\";\nimport { ContextShadeRadiancePropertiesAbridged } from \"./ContextShadeRadiancePropertiesAbridged\";\n\nexport class ContextShadePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ContextShadePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ContextShadePropertiesAbridged\";\n\t\n @Type(() => ContextShadeEnergyPropertiesAbridged)\n @IsInstance(ContextShadeEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: ContextShadeEnergyPropertiesAbridged;\n\t\n @Type(() => ContextShadeRadiancePropertiesAbridged)\n @IsInstance(ContextShadeRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: ContextShadeRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShadePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ContextShadePropertiesAbridged, _data);\n this.type = obj.type ?? \"ContextShadePropertiesAbridged\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): ContextShadePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShadePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ContextShadePropertiesAbridged\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, MinLength, MaxLength, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class ContextShadeEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ContextShadeEnergyPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ContextShadeEnergyPropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"construction\" })\n /** Name of a ShadeConstruction to set the reflectance and specularity of the ContextShade. If None, the the EnergyPlus default of 0.2 diffuse reflectance will be used. */\n construction?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"transmittance_schedule\" })\n /** Name of a schedule to set the transmittance of the ContextShade, which can vary throughout the simulation. If None, the ContextShade will be completely opaque. */\n transmittanceSchedule?: string;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShadeEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ContextShadeEnergyPropertiesAbridged, _data);\n this.type = obj.type ?? \"ContextShadeEnergyPropertiesAbridged\";\n this.construction = obj.construction;\n this.transmittanceSchedule = obj.transmittanceSchedule;\n }\n }\n\n\n static override fromJS(data: any): ContextShadeEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShadeEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ContextShadeEnergyPropertiesAbridged\";\n data[\"construction\"] = this.construction;\n data[\"transmittance_schedule\"] = this.transmittanceSchedule;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class ContextShadeRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ContextShadeRadiancePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ContextShadeRadiancePropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"modifier\" })\n /** Name of a Modifier to set the reflectance and specularity of the ContextShade. If None, the the default of 0.2 diffuse reflectance will be used. */\n modifier?: string;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShadeRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ContextShadeRadiancePropertiesAbridged, _data);\n this.type = obj.type ?? \"ContextShadeRadiancePropertiesAbridged\";\n this.modifier = obj.modifier;\n }\n }\n\n\n static override fromJS(data: any): ContextShadeRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShadeRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ContextShadeRadiancePropertiesAbridged\";\n data[\"modifier\"] = this.modifier;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** Choices for how the shading device is controlled. */\nexport enum ControlType {\n AlwaysOn = \"AlwaysOn\",\n OnIfHighSolarOnWindow = \"OnIfHighSolarOnWindow\",\n OnIfHighHorizontalSolar = \"OnIfHighHorizontalSolar\",\n OnIfHighOutdoorAirTemperature = \"OnIfHighOutdoorAirTemperature\",\n OnIfHighZoneAirTemperature = \"OnIfHighZoneAirTemperature\",\n OnIfHighZoneCooling = \"OnIfHighZoneCooling\",\n OnNightIfLowOutdoorTempAndOffDay = \"OnNightIfLowOutdoorTempAndOffDay\",\n OnNightIfLowInsideTempAndOffDay = \"OnNightIfLowInsideTempAndOffDay\",\n OnNightIfHeatingAndOffDay = \"OnNightIfHeatingAndOffDay\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum EconomizerType {\n NoEconomizer = \"NoEconomizer\",\n DifferentialDryBulb = \"DifferentialDryBulb\",\n DifferentialEnthalpy = \"DifferentialEnthalpy\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum EvaporativeCoolerEquipmentType {\n EvapCoolers_ElectricBaseboard = \"EvapCoolers_ElectricBaseboard\",\n EvapCoolers_BoilerBaseboard = \"EvapCoolers_BoilerBaseboard\",\n EvapCoolers_ASHPBaseboard = \"EvapCoolers_ASHPBaseboard\",\n EvapCoolers_DHWBaseboard = \"EvapCoolers_DHWBaseboard\",\n EvapCoolers_Furnace = \"EvapCoolers_Furnace\",\n EvapCoolers_UnitHeaters = \"EvapCoolers_UnitHeaters\",\n EvapCoolers = \"EvapCoolers\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum FaceType {\n Wall = \"Wall\",\n Floor = \"Floor\",\n RoofCeiling = \"RoofCeiling\",\n AirBoundary = \"AirBoundary\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum FCUEquipmentType {\n FCU_Chiller_Boiler = \"FCU_Chiller_Boiler\",\n FCU_Chiller_ASHP = \"FCU_Chiller_ASHP\",\n FCU_Chiller_DHW = \"FCU_Chiller_DHW\",\n FCU_Chiller_ElectricBaseboard = \"FCU_Chiller_ElectricBaseboard\",\n FCU_Chiller_GasHeaters = \"FCU_Chiller_GasHeaters\",\n FCU_Chiller = \"FCU_Chiller\",\n FCU_ACChiller_Boiler = \"FCU_ACChiller_Boiler\",\n FCU_ACChiller_ASHP = \"FCU_ACChiller_ASHP\",\n FCU_ACChiller_DHW = \"FCU_ACChiller_DHW\",\n FCU_ACChiller_ElectricBaseboard = \"FCU_ACChiller_ElectricBaseboard\",\n FCU_ACChiller_GasHeaters = \"FCU_ACChiller_GasHeaters\",\n FCU_ACChiller = \"FCU_ACChiller\",\n FCU_DCW_Boiler = \"FCU_DCW_Boiler\",\n FCU_DCW_ASHP = \"FCU_DCW_ASHP\",\n FCU_DCW_DHW = \"FCU_DCW_DHW\",\n FCU_DCW_ElectricBaseboard = \"FCU_DCW_ElectricBaseboard\",\n FCU_DCW_GasHeaters = \"FCU_DCW_GasHeaters\",\n FCU_DCW = \"FCU_DCW\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum FCUwithDOASEquipmentType {\n DOAS_FCU_Chiller_Boiler = \"DOAS_FCU_Chiller_Boiler\",\n DOAS_FCU_Chiller_ASHP = \"DOAS_FCU_Chiller_ASHP\",\n DOAS_FCU_Chiller_DHW = \"DOAS_FCU_Chiller_DHW\",\n DOAS_FCU_Chiller_ElectricBaseboard = \"DOAS_FCU_Chiller_ElectricBaseboard\",\n DOAS_FCU_Chiller_GasHeaters = \"DOAS_FCU_Chiller_GasHeaters\",\n DOAS_FCU_Chiller = \"DOAS_FCU_Chiller\",\n DOAS_FCU_ACChiller_Boiler = \"DOAS_FCU_ACChiller_Boiler\",\n DOAS_FCU_ACChiller_ASHP = \"DOAS_FCU_ACChiller_ASHP\",\n DOAS_FCU_ACChiller_DHW = \"DOAS_FCU_ACChiller_DHW\",\n DOAS_FCU_ACChiller_ElectricBaseboard = \"DOAS_FCU_ACChiller_ElectricBaseboard\",\n DOAS_FCU_ACChiller_GasHeaters = \"DOAS_FCU_ACChiller_GasHeaters\",\n DOAS_FCU_ACChiller = \"DOAS_FCU_ACChiller\",\n DOAS_FCU_DCW_Boiler = \"DOAS_FCU_DCW_Boiler\",\n DOAS_FCU_DCW_ASHP = \"DOAS_FCU_DCW_ASHP\",\n DOAS_FCU_DCW_DHW = \"DOAS_FCU_DCW_DHW\",\n DOAS_FCU_DCW_ElectricBaseboard = \"DOAS_FCU_DCW_ElectricBaseboard\",\n DOAS_FCU_DCW_GasHeaters = \"DOAS_FCU_DCW_GasHeaters\",\n DOAS_FCU_DCW = \"DOAS_FCU_DCW\",\n}","// Auto-generated\n\n/** Designates the acceptable fuel types for process loads. */\nexport enum FuelTypes {\n Electricity = \"Electricity\",\n NaturalGas = \"NaturalGas\",\n Propane = \"Propane\",\n FuelOilNo1 = \"FuelOilNo1\",\n FuelOilNo2 = \"FuelOilNo2\",\n Diesel = \"Diesel\",\n Gasoline = \"Gasoline\",\n Coal = \"Coal\",\n Steam = \"Steam\",\n DistrictHeating = \"DistrictHeating\",\n DistrictCooling = \"DistrictCooling\",\n OtherFuel1 = \"OtherFuel1\",\n OtherFuel2 = \"OtherFuel2\",\n None = \"None\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum FurnaceEquipmentType {\n Furnace = \"Furnace\",\n Furnace_Electric = \"Furnace_Electric\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum GasType {\n Air = \"Air\",\n Argon = \"Argon\",\n Krypton = \"Krypton\",\n Xenon = \"Xenon\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum GasUnitHeaterEquipmentType {\n GasHeaters = \"GasHeaters\",\n}","import { IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Equals, Matches, IsArray, IsEnum, IsNumber, Min, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { Building } from \"./Building\";\nimport { ContextShade } from \"./ContextShade\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { ModelProperties } from \"./ModelProperties\";\nimport { Units } from \"./Units\";\n\nexport class Model extends IDdBaseModel {\n @Type(() => ModelProperties)\n @IsInstance(ModelProperties)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: ModelProperties;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Model\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Model\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Matches(/([0-9]+)\\.([0-9]+)\\.([0-9]+)/)\n @Expose({ name: \"version\" })\n /** Text string for the current version of the schema. */\n version: string = \"0.0.0\";\n\t\n @IsArray()\n @Type(() => Building)\n @IsInstance(Building, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"buildings\" })\n /** A list of Buildings in the model. */\n buildings?: Building[];\n\t\n @IsArray()\n @Type(() => ContextShade)\n @IsInstance(ContextShade, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"context_shades\" })\n /** A list of ContextShades in the model. */\n contextShades?: ContextShade[];\n\t\n @Type(() => String)\n @IsEnum(Units)\n @IsOptional()\n @Expose({ name: \"units\" })\n /** Text indicating the units in which the model geometry exists. This is used to scale the geometry to the correct units for simulation engines like EnergyPlus, which requires all geometry be in meters. */\n units: Units = Units.Meters;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"tolerance\" })\n /** The maximum difference between x, y, and z values at which vertices are considered equivalent. This value should be in the Model units and is used in a variety of checks and operations. A value of 0 will result in bypassing all checks so it is recommended that this always be a positive number when checks have not already been performed on a Model. The default of 0.01 is suitable for models in meters. */\n tolerance: number = 0.01;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"angle_tolerance\" })\n /** The max angle difference in degrees that vertices are allowed to differ from one another in order to consider them colinear. This value is used in a variety of checks and operations that can be performed on geometry. A value of 0 will result in no checks and an inability to perform certain operations so it is recommended that this always be a positive number when checks have not already been performed on a given Model. */\n angleTolerance: number = 1;\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsOptional()\n @Expose({ name: \"reference_vector\" })\n /** A n optional list of 3 (x, y, z) values that describe a Vector3D relating the model to an original source coordinate system. Setting a value here is useful if the model has been moved from its original location and there may be future operations of merging geometry from the original source system. */\n referenceVector?: number[];\n\t\n\n constructor() {\n super();\n this.type = \"Model\";\n this.version = \"0.0.0\";\n this.units = Units.Meters;\n this.tolerance = 0.01;\n this.angleTolerance = 1;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Model, _data);\n this.properties = obj.properties;\n this.type = obj.type ?? \"Model\";\n this.version = obj.version ?? \"0.0.0\";\n this.buildings = obj.buildings;\n this.contextShades = obj.contextShades;\n this.units = obj.units ?? Units.Meters;\n this.tolerance = obj.tolerance ?? 0.01;\n this.angleTolerance = obj.angleTolerance ?? 1;\n this.referenceVector = obj.referenceVector;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): Model {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Model();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"Model\";\n data[\"version\"] = this.version ?? \"0.0.0\";\n data[\"buildings\"] = this.buildings;\n data[\"context_shades\"] = this.contextShades;\n data[\"units\"] = this.units ?? Units.Meters;\n data[\"tolerance\"] = this.tolerance ?? 0.01;\n data[\"angle_tolerance\"] = this.angleTolerance ?? 1;\n data[\"reference_vector\"] = this.referenceVector;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ModelComparisonProperties } from \"./ModelComparisonProperties\";\nimport { ModelDoe2Properties } from \"./ModelDoe2Properties\";\nimport { ModelEnergyProperties } from \"./ModelEnergyProperties\";\nimport { ModelRadianceProperties } from \"./ModelRadianceProperties\";\n\nexport class ModelProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelProperties\";\n\t\n @Type(() => ModelEnergyProperties)\n @IsInstance(ModelEnergyProperties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: ModelEnergyProperties;\n\t\n @Type(() => ModelRadianceProperties)\n @IsInstance(ModelRadianceProperties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: ModelRadianceProperties;\n\t\n @Type(() => ModelDoe2Properties)\n @IsInstance(ModelDoe2Properties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"doe2\" })\n /** doe2 */\n doe2?: ModelDoe2Properties;\n\t\n @Type(() => ModelComparisonProperties)\n @IsInstance(ModelComparisonProperties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"comparison\" })\n /** comparison */\n comparison?: ModelComparisonProperties;\n\t\n\n constructor() {\n super();\n this.type = \"ModelProperties\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelProperties, _data);\n this.type = obj.type ?? \"ModelProperties\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n this.doe2 = obj.doe2;\n this.comparison = obj.comparison;\n }\n }\n\n\n static override fromJS(data: any): ModelProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelProperties\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data[\"doe2\"] = this.doe2;\n data[\"comparison\"] = this.comparison;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class ModelComparisonProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelComparisonProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelComparisonProperties\";\n\t\n\n constructor() {\n super();\n this.type = \"ModelComparisonProperties\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelComparisonProperties, _data);\n this.type = obj.type ?? \"ModelComparisonProperties\";\n }\n }\n\n\n static override fromJS(data: any): ModelComparisonProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelComparisonProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelComparisonProperties\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class ModelDoe2Properties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelDoe2Properties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelDoe2Properties\";\n\t\n\n constructor() {\n super();\n this.type = \"ModelDoe2Properties\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelDoe2Properties, _data);\n this.type = obj.type ?? \"ModelDoe2Properties\";\n }\n }\n\n\n static override fromJS(data: any): ModelDoe2Properties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelDoe2Properties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelDoe2Properties\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { AirBoundaryConstruction } from \"honeybee-schema\";\nimport { AirBoundaryConstructionAbridged } from \"honeybee-schema\";\nimport { Baseboard } from \"honeybee-schema\";\nimport { ConstructionSet } from \"honeybee-schema\";\nimport { ConstructionSetAbridged } from \"honeybee-schema\";\nimport { DetailedHVAC } from \"honeybee-schema\";\nimport { EnergyMaterial } from \"honeybee-schema\";\nimport { EnergyMaterialNoMass } from \"honeybee-schema\";\nimport { EnergyMaterialVegetation } from \"honeybee-schema\";\nimport { EnergyWindowFrame } from \"honeybee-schema\";\nimport { EnergyWindowMaterialBlind } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGas } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGasCustom } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGasMixture } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGlazing } from \"honeybee-schema\";\nimport { EnergyWindowMaterialShade } from \"honeybee-schema\";\nimport { EnergyWindowMaterialSimpleGlazSys } from \"honeybee-schema\";\nimport { EvaporativeCooler } from \"honeybee-schema\";\nimport { FCU } from \"honeybee-schema\";\nimport { FCUwithDOASAbridged } from \"honeybee-schema\";\nimport { ForcedAirFurnace } from \"honeybee-schema\";\nimport { GasUnitHeater } from \"honeybee-schema\";\nimport { GlobalConstructionSet } from \"honeybee-schema\";\nimport { IdealAirSystemAbridged } from \"honeybee-schema\";\nimport { OpaqueConstruction } from \"honeybee-schema\";\nimport { OpaqueConstructionAbridged } from \"honeybee-schema\";\nimport { ProgramType } from \"honeybee-schema\";\nimport { ProgramTypeAbridged } from \"honeybee-schema\";\nimport { PSZ } from \"honeybee-schema\";\nimport { PTAC } from \"honeybee-schema\";\nimport { PVAV } from \"honeybee-schema\";\nimport { Radiant } from \"honeybee-schema\";\nimport { RadiantwithDOASAbridged } from \"honeybee-schema\";\nimport { Residential } from \"honeybee-schema\";\nimport { ScheduleFixedInterval } from \"honeybee-schema\";\nimport { ScheduleFixedIntervalAbridged } from \"honeybee-schema\";\nimport { ScheduleRuleset } from \"honeybee-schema\";\nimport { ScheduleRulesetAbridged } from \"honeybee-schema\";\nimport { ScheduleTypeLimit } from \"honeybee-schema\";\nimport { ShadeConstruction } from \"honeybee-schema\";\nimport { SHWSystem } from \"honeybee-schema\";\nimport { VAV } from \"honeybee-schema\";\nimport { VRF } from \"honeybee-schema\";\nimport { VRFwithDOASAbridged } from \"honeybee-schema\";\nimport { WindowAC } from \"honeybee-schema\";\nimport { WindowConstruction } from \"honeybee-schema\";\nimport { WindowConstructionAbridged } from \"honeybee-schema\";\nimport { WSHP } from \"honeybee-schema\";\nimport { WSHPwithDOASAbridged } from \"honeybee-schema\";\n\nexport class ModelEnergyProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelEnergyProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelEnergyProperties\";\n\t\n @Type(() => GlobalConstructionSet)\n @IsInstance(GlobalConstructionSet)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"global_construction_set\" })\n /** Global Energy construction set. */\n globalConstructionSet: GlobalConstructionSet = GlobalConstructionSet.fromJS({\n \"type\": \"GlobalConstructionSet\",\n \"materials\": [\n {\n \"conductivity\": 0.16,\n \"density\": 1120.0,\n \"display_name\": null,\n \"identifier\": \"Generic Roof Membrane\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 1460.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.01,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.06,\n \"density\": 368.0,\n \"display_name\": null,\n \"identifier\": \"Generic Acoustic Tile\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.2,\n \"specific_heat\": 590.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.02,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.2\n },\n {\n \"conductivity\": 0.15,\n \"density\": 608.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Wood\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1630.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0254,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 1.95,\n \"density\": 2240.0,\n \"display_name\": null,\n \"identifier\": \"Generic HW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 900.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.2,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"display_name\": null,\n \"gas_type\": \"Air\",\n \"identifier\": \"Generic Window Air Gap\",\n \"thickness\": 0.0127,\n \"type\": \"EnergyWindowMaterialGas\",\n \"user_data\": null\n },\n {\n \"conductivity\": 0.16,\n \"density\": 800.0,\n \"display_name\": null,\n \"identifier\": \"Generic Gypsum Board\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1090.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0127,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.667,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Wall Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.556,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Ceiling Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.9,\n \"density\": 1920.0,\n \"display_name\": null,\n \"identifier\": \"Generic Brick\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 790.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 50mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.05,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.047,\n \"identifier\": \"Generic Low-e Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.36,\n \"solar_reflectance_back\": 0.36,\n \"solar_transmittance\": 0.45,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.21,\n \"visible_reflectance_back\": 0.21,\n \"visible_transmittance\": 0.71\n },\n {\n \"conductivity\": 45.0,\n \"density\": 7690.0,\n \"display_name\": null,\n \"identifier\": \"Generic Painted Metal\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 410.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0015,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.53,\n \"density\": 1280.0,\n \"display_name\": null,\n \"identifier\": \"Generic LW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 840.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.025,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.84,\n \"identifier\": \"Generic Clear Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.07,\n \"solar_reflectance_back\": 0.07,\n \"solar_transmittance\": 0.77,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.08,\n \"visible_reflectance_back\": 0.08,\n \"visible_transmittance\": 0.88\n }\n ],\n \"constructions\": [\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Door\",\n \"materials\": [\n \"Generic 25mm Wood\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Single Pane\",\n \"materials\": [\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Shade\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.35,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.35\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Context\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.2,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.2\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Ceiling\",\n \"materials\": [\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Wall\",\n \"materials\": [\n \"Generic Gypsum Board\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exposed Floor\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic Ceiling Air Gap\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Floor\",\n \"materials\": [\n \"Generic Acoustic Tile\",\n \"Generic Ceiling Air Gap\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Ground Slab\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Roof\",\n \"materials\": [\n \"Generic Roof Membrane\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Wall\",\n \"materials\": [\n \"Generic Brick\",\n \"Generic LW Concrete\",\n \"Generic 50mm Insulation\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Wall\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"air_mixing_per_area\": 0.1,\n \"air_mixing_schedule\": \"Always On\",\n \"display_name\": null,\n \"identifier\": \"Generic Air Boundary\",\n \"type\": \"AirBoundaryConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Roof\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Double Pane\",\n \"materials\": [\n \"Generic Low-e Glass\",\n \"Generic Window Air Gap\",\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Door\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic 25mm Insulation\",\n \"Generic Painted Metal\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n }\n ],\n \"wall_set\": {\n \"exterior_construction\": \"Generic Exterior Wall\",\n \"ground_construction\": \"Generic Underground Wall\",\n \"interior_construction\": \"Generic Interior Wall\",\n \"type\": \"WallConstructionSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_construction\": \"Generic Exposed Floor\",\n \"ground_construction\": \"Generic Ground Slab\",\n \"interior_construction\": \"Generic Interior Floor\",\n \"type\": \"FloorConstructionSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_construction\": \"Generic Roof\",\n \"ground_construction\": \"Generic Underground Roof\",\n \"interior_construction\": \"Generic Interior Ceiling\",\n \"type\": \"RoofCeilingConstructionSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_construction\": \"Generic Single Pane\",\n \"operable_construction\": \"Generic Double Pane\",\n \"skylight_construction\": \"Generic Double Pane\",\n \"type\": \"ApertureConstructionSetAbridged\",\n \"window_construction\": \"Generic Double Pane\"\n },\n \"door_set\": {\n \"exterior_construction\": \"Generic Exterior Door\",\n \"exterior_glass_construction\": \"Generic Double Pane\",\n \"interior_construction\": \"Generic Interior Door\",\n \"interior_glass_construction\": \"Generic Single Pane\",\n \"overhead_construction\": \"Generic Exterior Door\",\n \"type\": \"DoorConstructionSetAbridged\"\n },\n \"shade_construction\": \"Generic Shade\",\n \"context_construction\": \"Generic Context\",\n \"air_boundary_construction\": \"Generic Air Boundary\"\n});\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"construction_sets\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ConstructionSetAbridged') return ConstructionSetAbridged.fromJS(item);\n else if (item?.type === 'ConstructionSet') return ConstructionSet.fromJS(item);\n else return item;\n }))\n /** List of all ConstructionSets in the Model. */\n constructionSets?: (ConstructionSetAbridged | ConstructionSet)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"constructions\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'OpaqueConstructionAbridged') return OpaqueConstructionAbridged.fromJS(item);\n else if (item?.type === 'WindowConstructionAbridged') return WindowConstructionAbridged.fromJS(item);\n else if (item?.type === 'ShadeConstruction') return ShadeConstruction.fromJS(item);\n else if (item?.type === 'AirBoundaryConstructionAbridged') return AirBoundaryConstructionAbridged.fromJS(item);\n else if (item?.type === 'OpaqueConstruction') return OpaqueConstruction.fromJS(item);\n else if (item?.type === 'WindowConstruction') return WindowConstruction.fromJS(item);\n else if (item?.type === 'AirBoundaryConstruction') return AirBoundaryConstruction.fromJS(item);\n else return item;\n }))\n /** A list of all unique constructions in the model. This includes constructions across all the Model construction_sets. */\n constructions?: (OpaqueConstructionAbridged | WindowConstructionAbridged | ShadeConstruction | AirBoundaryConstructionAbridged | OpaqueConstruction | WindowConstruction | AirBoundaryConstruction)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"materials\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'EnergyMaterial') return EnergyMaterial.fromJS(item);\n else if (item?.type === 'EnergyMaterialNoMass') return EnergyMaterialNoMass.fromJS(item);\n else if (item?.type === 'EnergyMaterialVegetation') return EnergyMaterialVegetation.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGas') return EnergyWindowMaterialGas.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGasCustom') return EnergyWindowMaterialGasCustom.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGasMixture') return EnergyWindowMaterialGasMixture.fromJS(item);\n else if (item?.type === 'EnergyWindowFrame') return EnergyWindowFrame.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialSimpleGlazSys') return EnergyWindowMaterialSimpleGlazSys.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGlazing') return EnergyWindowMaterialGlazing.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialBlind') return EnergyWindowMaterialBlind.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialShade') return EnergyWindowMaterialShade.fromJS(item);\n else return item;\n }))\n /** A list of all unique materials in the model. This includes materials needed to make the Model constructions. */\n materials?: (EnergyMaterial | EnergyMaterialNoMass | EnergyMaterialVegetation | EnergyWindowMaterialGas | EnergyWindowMaterialGasCustom | EnergyWindowMaterialGasMixture | EnergyWindowFrame | EnergyWindowMaterialSimpleGlazSys | EnergyWindowMaterialGlazing | EnergyWindowMaterialBlind | EnergyWindowMaterialShade)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"hvacs\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'IdealAirSystemAbridged') return IdealAirSystemAbridged.fromJS(item);\n else if (item?.type === 'VAV') return VAV.fromJS(item);\n else if (item?.type === 'PVAV') return PVAV.fromJS(item);\n else if (item?.type === 'PSZ') return PSZ.fromJS(item);\n else if (item?.type === 'PTAC') return PTAC.fromJS(item);\n else if (item?.type === 'ForcedAirFurnace') return ForcedAirFurnace.fromJS(item);\n else if (item?.type === 'FCUwithDOASAbridged') return FCUwithDOASAbridged.fromJS(item);\n else if (item?.type === 'WSHPwithDOASAbridged') return WSHPwithDOASAbridged.fromJS(item);\n else if (item?.type === 'VRFwithDOASAbridged') return VRFwithDOASAbridged.fromJS(item);\n else if (item?.type === 'RadiantwithDOASAbridged') return RadiantwithDOASAbridged.fromJS(item);\n else if (item?.type === 'FCU') return FCU.fromJS(item);\n else if (item?.type === 'WSHP') return WSHP.fromJS(item);\n else if (item?.type === 'VRF') return VRF.fromJS(item);\n else if (item?.type === 'Baseboard') return Baseboard.fromJS(item);\n else if (item?.type === 'EvaporativeCooler') return EvaporativeCooler.fromJS(item);\n else if (item?.type === 'Residential') return Residential.fromJS(item);\n else if (item?.type === 'WindowAC') return WindowAC.fromJS(item);\n else if (item?.type === 'GasUnitHeater') return GasUnitHeater.fromJS(item);\n else if (item?.type === 'Radiant') return Radiant.fromJS(item);\n else if (item?.type === 'DetailedHVAC') return DetailedHVAC.fromJS(item);\n else return item;\n }))\n /** List of all HVAC systems in the Model. */\n hvacs?: (IdealAirSystemAbridged | VAV | PVAV | PSZ | PTAC | ForcedAirFurnace | FCUwithDOASAbridged | WSHPwithDOASAbridged | VRFwithDOASAbridged | RadiantwithDOASAbridged | FCU | WSHP | VRF | Baseboard | EvaporativeCooler | Residential | WindowAC | GasUnitHeater | Radiant | DetailedHVAC)[];\n\t\n @IsArray()\n @Type(() => SHWSystem)\n @IsInstance(SHWSystem, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"shws\" })\n /** List of all Service Hot Water (SHW) systems in the Model. */\n shws?: SHWSystem[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"program_types\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ProgramTypeAbridged') return ProgramTypeAbridged.fromJS(item);\n else if (item?.type === 'ProgramType') return ProgramType.fromJS(item);\n else return item;\n }))\n /** List of all ProgramTypes in the Model. */\n programTypes?: (ProgramTypeAbridged | ProgramType)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"schedules\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ScheduleRulesetAbridged') return ScheduleRulesetAbridged.fromJS(item);\n else if (item?.type === 'ScheduleFixedIntervalAbridged') return ScheduleFixedIntervalAbridged.fromJS(item);\n else if (item?.type === 'ScheduleRuleset') return ScheduleRuleset.fromJS(item);\n else if (item?.type === 'ScheduleFixedInterval') return ScheduleFixedInterval.fromJS(item);\n else return item;\n }))\n /** A list of all unique schedules in the model. This includes schedules across all HVAC systems, ProgramTypes and ContextShades. */\n schedules?: (ScheduleRulesetAbridged | ScheduleFixedIntervalAbridged | ScheduleRuleset | ScheduleFixedInterval)[];\n\t\n @IsArray()\n @Type(() => ScheduleTypeLimit)\n @IsInstance(ScheduleTypeLimit, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"schedule_type_limits\" })\n /** A list of all unique ScheduleTypeLimits in the model. This all ScheduleTypeLimits needed to make the Model schedules. */\n scheduleTypeLimits?: ScheduleTypeLimit[];\n\t\n\n constructor() {\n super();\n this.type = \"ModelEnergyProperties\";\n this.globalConstructionSet = GlobalConstructionSet.fromJS({\n \"type\": \"GlobalConstructionSet\",\n \"materials\": [\n {\n \"conductivity\": 0.16,\n \"density\": 1120.0,\n \"display_name\": null,\n \"identifier\": \"Generic Roof Membrane\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 1460.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.01,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.06,\n \"density\": 368.0,\n \"display_name\": null,\n \"identifier\": \"Generic Acoustic Tile\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.2,\n \"specific_heat\": 590.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.02,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.2\n },\n {\n \"conductivity\": 0.15,\n \"density\": 608.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Wood\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1630.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0254,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 1.95,\n \"density\": 2240.0,\n \"display_name\": null,\n \"identifier\": \"Generic HW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 900.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.2,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"display_name\": null,\n \"gas_type\": \"Air\",\n \"identifier\": \"Generic Window Air Gap\",\n \"thickness\": 0.0127,\n \"type\": \"EnergyWindowMaterialGas\",\n \"user_data\": null\n },\n {\n \"conductivity\": 0.16,\n \"density\": 800.0,\n \"display_name\": null,\n \"identifier\": \"Generic Gypsum Board\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1090.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0127,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.667,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Wall Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.556,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Ceiling Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.9,\n \"density\": 1920.0,\n \"display_name\": null,\n \"identifier\": \"Generic Brick\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 790.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 50mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.05,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.047,\n \"identifier\": \"Generic Low-e Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.36,\n \"solar_reflectance_back\": 0.36,\n \"solar_transmittance\": 0.45,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.21,\n \"visible_reflectance_back\": 0.21,\n \"visible_transmittance\": 0.71\n },\n {\n \"conductivity\": 45.0,\n \"density\": 7690.0,\n \"display_name\": null,\n \"identifier\": \"Generic Painted Metal\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 410.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0015,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.53,\n \"density\": 1280.0,\n \"display_name\": null,\n \"identifier\": \"Generic LW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 840.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.025,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.84,\n \"identifier\": \"Generic Clear Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.07,\n \"solar_reflectance_back\": 0.07,\n \"solar_transmittance\": 0.77,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.08,\n \"visible_reflectance_back\": 0.08,\n \"visible_transmittance\": 0.88\n }\n ],\n \"constructions\": [\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Door\",\n \"materials\": [\n \"Generic 25mm Wood\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Single Pane\",\n \"materials\": [\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Shade\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.35,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.35\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Context\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.2,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.2\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Ceiling\",\n \"materials\": [\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Wall\",\n \"materials\": [\n \"Generic Gypsum Board\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exposed Floor\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic Ceiling Air Gap\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Floor\",\n \"materials\": [\n \"Generic Acoustic Tile\",\n \"Generic Ceiling Air Gap\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Ground Slab\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Roof\",\n \"materials\": [\n \"Generic Roof Membrane\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Wall\",\n \"materials\": [\n \"Generic Brick\",\n \"Generic LW Concrete\",\n \"Generic 50mm Insulation\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Wall\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"air_mixing_per_area\": 0.1,\n \"air_mixing_schedule\": \"Always On\",\n \"display_name\": null,\n \"identifier\": \"Generic Air Boundary\",\n \"type\": \"AirBoundaryConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Roof\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Double Pane\",\n \"materials\": [\n \"Generic Low-e Glass\",\n \"Generic Window Air Gap\",\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Door\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic 25mm Insulation\",\n \"Generic Painted Metal\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n }\n ],\n \"wall_set\": {\n \"exterior_construction\": \"Generic Exterior Wall\",\n \"ground_construction\": \"Generic Underground Wall\",\n \"interior_construction\": \"Generic Interior Wall\",\n \"type\": \"WallConstructionSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_construction\": \"Generic Exposed Floor\",\n \"ground_construction\": \"Generic Ground Slab\",\n \"interior_construction\": \"Generic Interior Floor\",\n \"type\": \"FloorConstructionSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_construction\": \"Generic Roof\",\n \"ground_construction\": \"Generic Underground Roof\",\n \"interior_construction\": \"Generic Interior Ceiling\",\n \"type\": \"RoofCeilingConstructionSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_construction\": \"Generic Single Pane\",\n \"operable_construction\": \"Generic Double Pane\",\n \"skylight_construction\": \"Generic Double Pane\",\n \"type\": \"ApertureConstructionSetAbridged\",\n \"window_construction\": \"Generic Double Pane\"\n },\n \"door_set\": {\n \"exterior_construction\": \"Generic Exterior Door\",\n \"exterior_glass_construction\": \"Generic Double Pane\",\n \"interior_construction\": \"Generic Interior Door\",\n \"interior_glass_construction\": \"Generic Single Pane\",\n \"overhead_construction\": \"Generic Exterior Door\",\n \"type\": \"DoorConstructionSetAbridged\"\n },\n \"shade_construction\": \"Generic Shade\",\n \"context_construction\": \"Generic Context\",\n \"air_boundary_construction\": \"Generic Air Boundary\"\n});\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelEnergyProperties, _data);\n this.type = obj.type ?? \"ModelEnergyProperties\";\n this.globalConstructionSet = obj.globalConstructionSet ?? GlobalConstructionSet.fromJS({\n \"type\": \"GlobalConstructionSet\",\n \"materials\": [\n {\n \"conductivity\": 0.16,\n \"density\": 1120.0,\n \"display_name\": null,\n \"identifier\": \"Generic Roof Membrane\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 1460.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.01,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.06,\n \"density\": 368.0,\n \"display_name\": null,\n \"identifier\": \"Generic Acoustic Tile\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.2,\n \"specific_heat\": 590.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.02,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.2\n },\n {\n \"conductivity\": 0.15,\n \"density\": 608.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Wood\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1630.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0254,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 1.95,\n \"density\": 2240.0,\n \"display_name\": null,\n \"identifier\": \"Generic HW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 900.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.2,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"display_name\": null,\n \"gas_type\": \"Air\",\n \"identifier\": \"Generic Window Air Gap\",\n \"thickness\": 0.0127,\n \"type\": \"EnergyWindowMaterialGas\",\n \"user_data\": null\n },\n {\n \"conductivity\": 0.16,\n \"density\": 800.0,\n \"display_name\": null,\n \"identifier\": \"Generic Gypsum Board\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1090.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0127,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.667,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Wall Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.556,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Ceiling Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.9,\n \"density\": 1920.0,\n \"display_name\": null,\n \"identifier\": \"Generic Brick\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 790.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 50mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.05,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.047,\n \"identifier\": \"Generic Low-e Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.36,\n \"solar_reflectance_back\": 0.36,\n \"solar_transmittance\": 0.45,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.21,\n \"visible_reflectance_back\": 0.21,\n \"visible_transmittance\": 0.71\n },\n {\n \"conductivity\": 45.0,\n \"density\": 7690.0,\n \"display_name\": null,\n \"identifier\": \"Generic Painted Metal\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 410.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0015,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.53,\n \"density\": 1280.0,\n \"display_name\": null,\n \"identifier\": \"Generic LW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 840.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.025,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.84,\n \"identifier\": \"Generic Clear Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.07,\n \"solar_reflectance_back\": 0.07,\n \"solar_transmittance\": 0.77,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.08,\n \"visible_reflectance_back\": 0.08,\n \"visible_transmittance\": 0.88\n }\n ],\n \"constructions\": [\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Door\",\n \"materials\": [\n \"Generic 25mm Wood\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Single Pane\",\n \"materials\": [\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Shade\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.35,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.35\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Context\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.2,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.2\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Ceiling\",\n \"materials\": [\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Wall\",\n \"materials\": [\n \"Generic Gypsum Board\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exposed Floor\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic Ceiling Air Gap\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Floor\",\n \"materials\": [\n \"Generic Acoustic Tile\",\n \"Generic Ceiling Air Gap\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Ground Slab\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Roof\",\n \"materials\": [\n \"Generic Roof Membrane\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Wall\",\n \"materials\": [\n \"Generic Brick\",\n \"Generic LW Concrete\",\n \"Generic 50mm Insulation\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Wall\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"air_mixing_per_area\": 0.1,\n \"air_mixing_schedule\": \"Always On\",\n \"display_name\": null,\n \"identifier\": \"Generic Air Boundary\",\n \"type\": \"AirBoundaryConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Roof\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Double Pane\",\n \"materials\": [\n \"Generic Low-e Glass\",\n \"Generic Window Air Gap\",\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Door\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic 25mm Insulation\",\n \"Generic Painted Metal\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n }\n ],\n \"wall_set\": {\n \"exterior_construction\": \"Generic Exterior Wall\",\n \"ground_construction\": \"Generic Underground Wall\",\n \"interior_construction\": \"Generic Interior Wall\",\n \"type\": \"WallConstructionSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_construction\": \"Generic Exposed Floor\",\n \"ground_construction\": \"Generic Ground Slab\",\n \"interior_construction\": \"Generic Interior Floor\",\n \"type\": \"FloorConstructionSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_construction\": \"Generic Roof\",\n \"ground_construction\": \"Generic Underground Roof\",\n \"interior_construction\": \"Generic Interior Ceiling\",\n \"type\": \"RoofCeilingConstructionSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_construction\": \"Generic Single Pane\",\n \"operable_construction\": \"Generic Double Pane\",\n \"skylight_construction\": \"Generic Double Pane\",\n \"type\": \"ApertureConstructionSetAbridged\",\n \"window_construction\": \"Generic Double Pane\"\n },\n \"door_set\": {\n \"exterior_construction\": \"Generic Exterior Door\",\n \"exterior_glass_construction\": \"Generic Double Pane\",\n \"interior_construction\": \"Generic Interior Door\",\n \"interior_glass_construction\": \"Generic Single Pane\",\n \"overhead_construction\": \"Generic Exterior Door\",\n \"type\": \"DoorConstructionSetAbridged\"\n },\n \"shade_construction\": \"Generic Shade\",\n \"context_construction\": \"Generic Context\",\n \"air_boundary_construction\": \"Generic Air Boundary\"\n});\n this.constructionSets = obj.constructionSets;\n this.constructions = obj.constructions;\n this.materials = obj.materials;\n this.hvacs = obj.hvacs;\n this.shws = obj.shws;\n this.programTypes = obj.programTypes;\n this.schedules = obj.schedules;\n this.scheduleTypeLimits = obj.scheduleTypeLimits;\n }\n }\n\n\n static override fromJS(data: any): ModelEnergyProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelEnergyProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelEnergyProperties\";\n data[\"global_construction_set\"] = this.globalConstructionSet ?? GlobalConstructionSet.fromJS({\n \"type\": \"GlobalConstructionSet\",\n \"materials\": [\n {\n \"conductivity\": 0.16,\n \"density\": 1120.0,\n \"display_name\": null,\n \"identifier\": \"Generic Roof Membrane\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 1460.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.01,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.06,\n \"density\": 368.0,\n \"display_name\": null,\n \"identifier\": \"Generic Acoustic Tile\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.2,\n \"specific_heat\": 590.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.02,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.2\n },\n {\n \"conductivity\": 0.15,\n \"density\": 608.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Wood\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1630.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0254,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 1.95,\n \"density\": 2240.0,\n \"display_name\": null,\n \"identifier\": \"Generic HW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 900.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.2,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"display_name\": null,\n \"gas_type\": \"Air\",\n \"identifier\": \"Generic Window Air Gap\",\n \"thickness\": 0.0127,\n \"type\": \"EnergyWindowMaterialGas\",\n \"user_data\": null\n },\n {\n \"conductivity\": 0.16,\n \"density\": 800.0,\n \"display_name\": null,\n \"identifier\": \"Generic Gypsum Board\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1090.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0127,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.667,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Wall Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.556,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Ceiling Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.9,\n \"density\": 1920.0,\n \"display_name\": null,\n \"identifier\": \"Generic Brick\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 790.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 50mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.05,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.047,\n \"identifier\": \"Generic Low-e Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.36,\n \"solar_reflectance_back\": 0.36,\n \"solar_transmittance\": 0.45,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.21,\n \"visible_reflectance_back\": 0.21,\n \"visible_transmittance\": 0.71\n },\n {\n \"conductivity\": 45.0,\n \"density\": 7690.0,\n \"display_name\": null,\n \"identifier\": \"Generic Painted Metal\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 410.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0015,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.53,\n \"density\": 1280.0,\n \"display_name\": null,\n \"identifier\": \"Generic LW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 840.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.025,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.84,\n \"identifier\": \"Generic Clear Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.07,\n \"solar_reflectance_back\": 0.07,\n \"solar_transmittance\": 0.77,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.08,\n \"visible_reflectance_back\": 0.08,\n \"visible_transmittance\": 0.88\n }\n ],\n \"constructions\": [\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Door\",\n \"materials\": [\n \"Generic 25mm Wood\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Single Pane\",\n \"materials\": [\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Shade\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.35,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.35\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Context\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.2,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.2\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Ceiling\",\n \"materials\": [\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Wall\",\n \"materials\": [\n \"Generic Gypsum Board\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exposed Floor\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic Ceiling Air Gap\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Floor\",\n \"materials\": [\n \"Generic Acoustic Tile\",\n \"Generic Ceiling Air Gap\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Ground Slab\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Roof\",\n \"materials\": [\n \"Generic Roof Membrane\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Wall\",\n \"materials\": [\n \"Generic Brick\",\n \"Generic LW Concrete\",\n \"Generic 50mm Insulation\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Wall\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"air_mixing_per_area\": 0.1,\n \"air_mixing_schedule\": \"Always On\",\n \"display_name\": null,\n \"identifier\": \"Generic Air Boundary\",\n \"type\": \"AirBoundaryConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Roof\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Double Pane\",\n \"materials\": [\n \"Generic Low-e Glass\",\n \"Generic Window Air Gap\",\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Door\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic 25mm Insulation\",\n \"Generic Painted Metal\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n }\n ],\n \"wall_set\": {\n \"exterior_construction\": \"Generic Exterior Wall\",\n \"ground_construction\": \"Generic Underground Wall\",\n \"interior_construction\": \"Generic Interior Wall\",\n \"type\": \"WallConstructionSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_construction\": \"Generic Exposed Floor\",\n \"ground_construction\": \"Generic Ground Slab\",\n \"interior_construction\": \"Generic Interior Floor\",\n \"type\": \"FloorConstructionSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_construction\": \"Generic Roof\",\n \"ground_construction\": \"Generic Underground Roof\",\n \"interior_construction\": \"Generic Interior Ceiling\",\n \"type\": \"RoofCeilingConstructionSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_construction\": \"Generic Single Pane\",\n \"operable_construction\": \"Generic Double Pane\",\n \"skylight_construction\": \"Generic Double Pane\",\n \"type\": \"ApertureConstructionSetAbridged\",\n \"window_construction\": \"Generic Double Pane\"\n },\n \"door_set\": {\n \"exterior_construction\": \"Generic Exterior Door\",\n \"exterior_glass_construction\": \"Generic Double Pane\",\n \"interior_construction\": \"Generic Interior Door\",\n \"interior_glass_construction\": \"Generic Single Pane\",\n \"overhead_construction\": \"Generic Exterior Door\",\n \"type\": \"DoorConstructionSetAbridged\"\n },\n \"shade_construction\": \"Generic Shade\",\n \"context_construction\": \"Generic Context\",\n \"air_boundary_construction\": \"Generic Air Boundary\"\n});\n data[\"construction_sets\"] = this.constructionSets;\n data[\"constructions\"] = this.constructions;\n data[\"materials\"] = this.materials;\n data[\"hvacs\"] = this.hvacs;\n data[\"shws\"] = this.shws;\n data[\"program_types\"] = this.programTypes;\n data[\"schedules\"] = this.schedules;\n data[\"schedule_type_limits\"] = this.scheduleTypeLimits;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { BSDF } from \"honeybee-schema\";\nimport { Glass } from \"honeybee-schema\";\nimport { GlobalModifierSet } from \"honeybee-schema\";\nimport { Glow } from \"honeybee-schema\";\nimport { Light } from \"honeybee-schema\";\nimport { Metal } from \"honeybee-schema\";\nimport { Mirror } from \"honeybee-schema\";\nimport { ModifierSet } from \"honeybee-schema\";\nimport { ModifierSetAbridged } from \"honeybee-schema\";\nimport { Plastic } from \"honeybee-schema\";\nimport { Trans } from \"honeybee-schema\";\nimport { Void } from \"honeybee-schema\";\n\nexport class ModelRadianceProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelRadianceProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelRadianceProperties\";\n\t\n @Type(() => GlobalModifierSet)\n @IsInstance(GlobalModifierSet)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"global_modifier_set\" })\n /** Global Radiance modifier set. */\n globalModifierSet: GlobalModifierSet = GlobalModifierSet.fromJS({\n \"type\": \"GlobalModifierSet\",\n \"modifiers\": [\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_floor_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_wall_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.8,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.8,\n \"identifier\": \"generic_ceiling_0.80\",\n \"modifier\": null,\n \"r_reflectance\": 0.8,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_opaque_door_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_interior_shade_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.35,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.35,\n \"identifier\": \"generic_exterior_shade_0.35\",\n \"modifier\": null,\n \"r_reflectance\": 0.35,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_context_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_transmissivity\": 0.9584154328610596,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.9584154328610596,\n \"identifier\": \"generic_interior_window_vis_0.88\",\n \"modifier\": null,\n \"r_transmissivity\": 0.9584154328610596,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_transmissivity\": 0.6975761815384331,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.6975761815384331,\n \"identifier\": \"generic_exterior_window_vis_0.64\",\n \"modifier\": null,\n \"r_transmissivity\": 0.6975761815384331,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_reflectance\": 1.0,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 1.0,\n \"identifier\": \"air_boundary\",\n \"modifier\": null,\n \"r_reflectance\": 1.0,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"transmitted_diff\": 1.0,\n \"transmitted_spec\": 1.0,\n \"type\": \"Trans\"\n }\n ],\n \"wall_set\": {\n \"exterior_modifier\": \"generic_wall_0.50\",\n \"interior_modifier\": \"generic_wall_0.50\",\n \"type\": \"WallModifierSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_modifier\": \"generic_floor_0.20\",\n \"interior_modifier\": \"generic_floor_0.20\",\n \"type\": \"FloorModifierSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_modifier\": \"generic_ceiling_0.80\",\n \"interior_modifier\": \"generic_ceiling_0.80\",\n \"type\": \"RoofCeilingModifierSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_modifier\": \"generic_interior_window_vis_0.88\",\n \"operable_modifier\": \"generic_exterior_window_vis_0.64\",\n \"skylight_modifier\": \"generic_exterior_window_vis_0.64\",\n \"type\": \"ApertureModifierSetAbridged\",\n \"window_modifier\": \"generic_exterior_window_vis_0.64\"\n },\n \"door_set\": {\n \"exterior_glass_modifier\": \"generic_exterior_window_vis_0.64\",\n \"exterior_modifier\": \"generic_opaque_door_0.50\",\n \"interior_glass_modifier\": \"generic_interior_window_vis_0.88\",\n \"interior_modifier\": \"generic_opaque_door_0.50\",\n \"overhead_modifier\": \"generic_opaque_door_0.50\",\n \"type\": \"DoorModifierSetAbridged\"\n },\n \"shade_set\": {\n \"exterior_modifier\": \"generic_exterior_shade_0.35\",\n \"interior_modifier\": \"generic_interior_shade_0.50\",\n \"type\": \"ShadeModifierSetAbridged\"\n },\n \"air_boundary_modifier\": \"air_boundary\",\n \"context_modifier\": \"generic_context_0.20\"\n});\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"modifier_sets\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ModifierSet') return ModifierSet.fromJS(item);\n else if (item?.type === 'ModifierSetAbridged') return ModifierSetAbridged.fromJS(item);\n else return item;\n }))\n /** List of all ModifierSets in the Model. */\n modifierSets?: (ModifierSet | ModifierSetAbridged)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"modifiers\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'Plastic') return Plastic.fromJS(item);\n else if (item?.type === 'Glass') return Glass.fromJS(item);\n else if (item?.type === 'BSDF') return BSDF.fromJS(item);\n else if (item?.type === 'Glow') return Glow.fromJS(item);\n else if (item?.type === 'Light') return Light.fromJS(item);\n else if (item?.type === 'Trans') return Trans.fromJS(item);\n else if (item?.type === 'Metal') return Metal.fromJS(item);\n else if (item?.type === 'Void') return Void.fromJS(item);\n else if (item?.type === 'Mirror') return Mirror.fromJS(item);\n else return item;\n }))\n /** A list of all unique modifiers in the model. This includes modifiers across all the Model modifier_sets. */\n modifiers?: (Plastic | Glass | BSDF | Glow | Light | Trans | Metal | Void | Mirror)[];\n\t\n\n constructor() {\n super();\n this.type = \"ModelRadianceProperties\";\n this.globalModifierSet = GlobalModifierSet.fromJS({\n \"type\": \"GlobalModifierSet\",\n \"modifiers\": [\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_floor_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_wall_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.8,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.8,\n \"identifier\": \"generic_ceiling_0.80\",\n \"modifier\": null,\n \"r_reflectance\": 0.8,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_opaque_door_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_interior_shade_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.35,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.35,\n \"identifier\": \"generic_exterior_shade_0.35\",\n \"modifier\": null,\n \"r_reflectance\": 0.35,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_context_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_transmissivity\": 0.9584154328610596,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.9584154328610596,\n \"identifier\": \"generic_interior_window_vis_0.88\",\n \"modifier\": null,\n \"r_transmissivity\": 0.9584154328610596,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_transmissivity\": 0.6975761815384331,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.6975761815384331,\n \"identifier\": \"generic_exterior_window_vis_0.64\",\n \"modifier\": null,\n \"r_transmissivity\": 0.6975761815384331,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_reflectance\": 1.0,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 1.0,\n \"identifier\": \"air_boundary\",\n \"modifier\": null,\n \"r_reflectance\": 1.0,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"transmitted_diff\": 1.0,\n \"transmitted_spec\": 1.0,\n \"type\": \"Trans\"\n }\n ],\n \"wall_set\": {\n \"exterior_modifier\": \"generic_wall_0.50\",\n \"interior_modifier\": \"generic_wall_0.50\",\n \"type\": \"WallModifierSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_modifier\": \"generic_floor_0.20\",\n \"interior_modifier\": \"generic_floor_0.20\",\n \"type\": \"FloorModifierSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_modifier\": \"generic_ceiling_0.80\",\n \"interior_modifier\": \"generic_ceiling_0.80\",\n \"type\": \"RoofCeilingModifierSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_modifier\": \"generic_interior_window_vis_0.88\",\n \"operable_modifier\": \"generic_exterior_window_vis_0.64\",\n \"skylight_modifier\": \"generic_exterior_window_vis_0.64\",\n \"type\": \"ApertureModifierSetAbridged\",\n \"window_modifier\": \"generic_exterior_window_vis_0.64\"\n },\n \"door_set\": {\n \"exterior_glass_modifier\": \"generic_exterior_window_vis_0.64\",\n \"exterior_modifier\": \"generic_opaque_door_0.50\",\n \"interior_glass_modifier\": \"generic_interior_window_vis_0.88\",\n \"interior_modifier\": \"generic_opaque_door_0.50\",\n \"overhead_modifier\": \"generic_opaque_door_0.50\",\n \"type\": \"DoorModifierSetAbridged\"\n },\n \"shade_set\": {\n \"exterior_modifier\": \"generic_exterior_shade_0.35\",\n \"interior_modifier\": \"generic_interior_shade_0.50\",\n \"type\": \"ShadeModifierSetAbridged\"\n },\n \"air_boundary_modifier\": \"air_boundary\",\n \"context_modifier\": \"generic_context_0.20\"\n});\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelRadianceProperties, _data);\n this.type = obj.type ?? \"ModelRadianceProperties\";\n this.globalModifierSet = obj.globalModifierSet ?? GlobalModifierSet.fromJS({\n \"type\": \"GlobalModifierSet\",\n \"modifiers\": [\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_floor_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_wall_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.8,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.8,\n \"identifier\": \"generic_ceiling_0.80\",\n \"modifier\": null,\n \"r_reflectance\": 0.8,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_opaque_door_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_interior_shade_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.35,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.35,\n \"identifier\": \"generic_exterior_shade_0.35\",\n \"modifier\": null,\n \"r_reflectance\": 0.35,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_context_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_transmissivity\": 0.9584154328610596,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.9584154328610596,\n \"identifier\": \"generic_interior_window_vis_0.88\",\n \"modifier\": null,\n \"r_transmissivity\": 0.9584154328610596,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_transmissivity\": 0.6975761815384331,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.6975761815384331,\n \"identifier\": \"generic_exterior_window_vis_0.64\",\n \"modifier\": null,\n \"r_transmissivity\": 0.6975761815384331,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_reflectance\": 1.0,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 1.0,\n \"identifier\": \"air_boundary\",\n \"modifier\": null,\n \"r_reflectance\": 1.0,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"transmitted_diff\": 1.0,\n \"transmitted_spec\": 1.0,\n \"type\": \"Trans\"\n }\n ],\n \"wall_set\": {\n \"exterior_modifier\": \"generic_wall_0.50\",\n \"interior_modifier\": \"generic_wall_0.50\",\n \"type\": \"WallModifierSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_modifier\": \"generic_floor_0.20\",\n \"interior_modifier\": \"generic_floor_0.20\",\n \"type\": \"FloorModifierSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_modifier\": \"generic_ceiling_0.80\",\n \"interior_modifier\": \"generic_ceiling_0.80\",\n \"type\": \"RoofCeilingModifierSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_modifier\": \"generic_interior_window_vis_0.88\",\n \"operable_modifier\": \"generic_exterior_window_vis_0.64\",\n \"skylight_modifier\": \"generic_exterior_window_vis_0.64\",\n \"type\": \"ApertureModifierSetAbridged\",\n \"window_modifier\": \"generic_exterior_window_vis_0.64\"\n },\n \"door_set\": {\n \"exterior_glass_modifier\": \"generic_exterior_window_vis_0.64\",\n \"exterior_modifier\": \"generic_opaque_door_0.50\",\n \"interior_glass_modifier\": \"generic_interior_window_vis_0.88\",\n \"interior_modifier\": \"generic_opaque_door_0.50\",\n \"overhead_modifier\": \"generic_opaque_door_0.50\",\n \"type\": \"DoorModifierSetAbridged\"\n },\n \"shade_set\": {\n \"exterior_modifier\": \"generic_exterior_shade_0.35\",\n \"interior_modifier\": \"generic_interior_shade_0.50\",\n \"type\": \"ShadeModifierSetAbridged\"\n },\n \"air_boundary_modifier\": \"air_boundary\",\n \"context_modifier\": \"generic_context_0.20\"\n});\n this.modifierSets = obj.modifierSets;\n this.modifiers = obj.modifiers;\n }\n }\n\n\n static override fromJS(data: any): ModelRadianceProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelRadianceProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelRadianceProperties\";\n data[\"global_modifier_set\"] = this.globalModifierSet ?? GlobalModifierSet.fromJS({\n \"type\": \"GlobalModifierSet\",\n \"modifiers\": [\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_floor_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_wall_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.8,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.8,\n \"identifier\": \"generic_ceiling_0.80\",\n \"modifier\": null,\n \"r_reflectance\": 0.8,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_opaque_door_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_interior_shade_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.35,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.35,\n \"identifier\": \"generic_exterior_shade_0.35\",\n \"modifier\": null,\n \"r_reflectance\": 0.35,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_context_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_transmissivity\": 0.9584154328610596,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.9584154328610596,\n \"identifier\": \"generic_interior_window_vis_0.88\",\n \"modifier\": null,\n \"r_transmissivity\": 0.9584154328610596,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_transmissivity\": 0.6975761815384331,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.6975761815384331,\n \"identifier\": \"generic_exterior_window_vis_0.64\",\n \"modifier\": null,\n \"r_transmissivity\": 0.6975761815384331,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_reflectance\": 1.0,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 1.0,\n \"identifier\": \"air_boundary\",\n \"modifier\": null,\n \"r_reflectance\": 1.0,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"transmitted_diff\": 1.0,\n \"transmitted_spec\": 1.0,\n \"type\": \"Trans\"\n }\n ],\n \"wall_set\": {\n \"exterior_modifier\": \"generic_wall_0.50\",\n \"interior_modifier\": \"generic_wall_0.50\",\n \"type\": \"WallModifierSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_modifier\": \"generic_floor_0.20\",\n \"interior_modifier\": \"generic_floor_0.20\",\n \"type\": \"FloorModifierSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_modifier\": \"generic_ceiling_0.80\",\n \"interior_modifier\": \"generic_ceiling_0.80\",\n \"type\": \"RoofCeilingModifierSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_modifier\": \"generic_interior_window_vis_0.88\",\n \"operable_modifier\": \"generic_exterior_window_vis_0.64\",\n \"skylight_modifier\": \"generic_exterior_window_vis_0.64\",\n \"type\": \"ApertureModifierSetAbridged\",\n \"window_modifier\": \"generic_exterior_window_vis_0.64\"\n },\n \"door_set\": {\n \"exterior_glass_modifier\": \"generic_exterior_window_vis_0.64\",\n \"exterior_modifier\": \"generic_opaque_door_0.50\",\n \"interior_glass_modifier\": \"generic_interior_window_vis_0.88\",\n \"interior_modifier\": \"generic_opaque_door_0.50\",\n \"overhead_modifier\": \"generic_opaque_door_0.50\",\n \"type\": \"DoorModifierSetAbridged\"\n },\n \"shade_set\": {\n \"exterior_modifier\": \"generic_exterior_shade_0.35\",\n \"interior_modifier\": \"generic_interior_shade_0.50\",\n \"type\": \"ShadeModifierSetAbridged\"\n },\n \"air_boundary_modifier\": \"air_boundary\",\n \"context_modifier\": \"generic_context_0.20\"\n});\n data[\"modifier_sets\"] = this.modifierSets;\n data[\"modifiers\"] = this.modifiers;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum Units {\n Meters = \"Meters\",\n Millimeters = \"Millimeters\",\n Feet = \"Feet\",\n Inches = \"Inches\",\n Centimeters = \"Centimeters\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum ModuleType {\n Standard = \"Standard\",\n Premium = \"Premium\",\n ThinFilm = \"ThinFilm\",\n}","// Auto-generated\n\n/** Acceptable values for the moisture diffusion model for vegetation. */\nexport enum MoistureDiffusionModel {\n Simple = \"Simple\",\n Advanced = \"Advanced\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum MountingType {\n FixedOpenRack = \"FixedOpenRack\",\n FixedRoofMounted = \"FixedRoofMounted\",\n OneAxis = \"OneAxis\",\n OneAxisBacktracking = \"OneAxisBacktracking\",\n TwoAxis = \"TwoAxis\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum PSZEquipmentType {\n PSZAC_ElectricBaseboard = \"PSZAC_ElectricBaseboard\",\n PSZAC_BoilerBaseboard = \"PSZAC_BoilerBaseboard\",\n PSZAC_DHWBaseboard = \"PSZAC_DHWBaseboard\",\n PSZAC_GasHeaters = \"PSZAC_GasHeaters\",\n PSZAC_ElectricCoil = \"PSZAC_ElectricCoil\",\n PSZAC_GasCoil = \"PSZAC_GasCoil\",\n PSZAC_Boiler = \"PSZAC_Boiler\",\n PSZAC_ASHP = \"PSZAC_ASHP\",\n PSZAC_DHW = \"PSZAC_DHW\",\n PSZAC = \"PSZAC\",\n PSZAC_DCW_ElectricBaseboard = \"PSZAC_DCW_ElectricBaseboard\",\n PSZAC_DCW_BoilerBaseboard = \"PSZAC_DCW_BoilerBaseboard\",\n PSZAC_DCW_GasHeaters = \"PSZAC_DCW_GasHeaters\",\n PSZAC_DCW_ElectricCoil = \"PSZAC_DCW_ElectricCoil\",\n PSZAC_DCW_GasCoil = \"PSZAC_DCW_GasCoil\",\n PSZAC_DCW_Boiler = \"PSZAC_DCW_Boiler\",\n PSZAC_DCW_ASHP = \"PSZAC_DCW_ASHP\",\n PSZAC_DCW_DHW = \"PSZAC_DCW_DHW\",\n PSZAC_DCW = \"PSZAC_DCW\",\n PSZHP = \"PSZHP\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum PTACEquipmentType {\n PTAC_ElectricBaseboard = \"PTAC_ElectricBaseboard\",\n PTAC_BoilerBaseboard = \"PTAC_BoilerBaseboard\",\n PTAC_DHWBaseboard = \"PTAC_DHWBaseboard\",\n PTAC_GasHeaters = \"PTAC_GasHeaters\",\n PTAC_ElectricCoil = \"PTAC_ElectricCoil\",\n PTAC_GasCoil = \"PTAC_GasCoil\",\n PTAC_Boiler = \"PTAC_Boiler\",\n PTAC_ASHP = \"PTAC_ASHP\",\n PTAC_DHW = \"PTAC_DHW\",\n PTAC = \"PTAC\",\n PTHP = \"PTHP\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum PVAVEquipmentType {\n PVAV_Boiler = \"PVAV_Boiler\",\n PVAV_ASHP = \"PVAV_ASHP\",\n PVAV_DHW = \"PVAV_DHW\",\n PVAV_PFP = \"PVAV_PFP\",\n PVAV_BoilerElectricReheat = \"PVAV_BoilerElectricReheat\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum RadiantEquipmentType {\n Radiant_Chiller_Boiler = \"Radiant_Chiller_Boiler\",\n Radiant_Chiller_ASHP = \"Radiant_Chiller_ASHP\",\n Radiant_Chiller_DHW = \"Radiant_Chiller_DHW\",\n Radiant_ACChiller_Boiler = \"Radiant_ACChiller_Boiler\",\n Radiant_ACChiller_ASHP = \"Radiant_ACChiller_ASHP\",\n Radiant_ACChiller_DHW = \"Radiant_ACChiller_DHW\",\n Radiant_DCW_Boiler = \"Radiant_DCW_Boiler\",\n Radiant_DCW_ASHP = \"Radiant_DCW_ASHP\",\n Radiant_DCW_DHW = \"Radiant_DCW_DHW\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum RadiantFaceTypes {\n Floor = \"Floor\",\n Ceiling = \"Ceiling\",\n FloorWithCarpet = \"FloorWithCarpet\",\n CeilingMetalPanel = \"CeilingMetalPanel\",\n FloorWithHardwood = \"FloorWithHardwood\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum RadiantwithDOASEquipmentType {\n DOAS_Radiant_Chiller_Boiler = \"DOAS_Radiant_Chiller_Boiler\",\n DOAS_Radiant_Chiller_ASHP = \"DOAS_Radiant_Chiller_ASHP\",\n DOAS_Radiant_Chiller_DHW = \"DOAS_Radiant_Chiller_DHW\",\n DOAS_Radiant_ACChiller_Boiler = \"DOAS_Radiant_ACChiller_Boiler\",\n DOAS_Radiant_ACChiller_ASHP = \"DOAS_Radiant_ACChiller_ASHP\",\n DOAS_Radiant_ACChiller_DHW = \"DOAS_Radiant_ACChiller_DHW\",\n DOAS_Radiant_DCW_Boiler = \"DOAS_Radiant_DCW_Boiler\",\n DOAS_Radiant_DCW_ASHP = \"DOAS_Radiant_DCW_ASHP\",\n DOAS_Radiant_DCW_DHW = \"DOAS_Radiant_DCW_DHW\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum ResidentialEquipmentType {\n ResidentialAC_ElectricBaseboard = \"ResidentialAC_ElectricBaseboard\",\n ResidentialAC_BoilerBaseboard = \"ResidentialAC_BoilerBaseboard\",\n ResidentialAC_ASHPBaseboard = \"ResidentialAC_ASHPBaseboard\",\n ResidentialAC_DHWBaseboard = \"ResidentialAC_DHWBaseboard\",\n ResidentialAC_ResidentialFurnace = \"ResidentialAC_ResidentialFurnace\",\n ResidentialAC = \"ResidentialAC\",\n ResidentialHP = \"ResidentialHP\",\n ResidentialHPNoCool = \"ResidentialHPNoCool\",\n ResidentialFurnace = \"ResidentialFurnace\",\n}","// Auto-generated\n\n/** Relative roughness of a particular material layer. */\nexport enum Roughness {\n VeryRough = \"VeryRough\",\n Rough = \"Rough\",\n MediumRough = \"MediumRough\",\n MediumSmooth = \"MediumSmooth\",\n Smooth = \"Smooth\",\n VerySmooth = \"VerySmooth\",\n}","// Auto-generated\n\n/** Designates how the range values are validated. */\nexport enum ScheduleNumericType {\n Continuous = \"Continuous\",\n Discrete = \"Discrete\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum ScheduleUnitType {\n Dimensionless = \"Dimensionless\",\n Temperature = \"Temperature\",\n DeltaTemperature = \"DeltaTemperature\",\n PrecipitationRate = \"PrecipitationRate\",\n Angle = \"Angle\",\n ConvectionCoefficient = \"ConvectionCoefficient\",\n ActivityLevel = \"ActivityLevel\",\n Velocity = \"Velocity\",\n Capacity = \"Capacity\",\n Power = \"Power\",\n Availability = \"Availability\",\n Percent = \"Percent\",\n Control = \"Control\",\n Mode = \"Mode\",\n}","// Auto-generated\n\n/** Choices for where a shade material is located in a window assembly. */\nexport enum ShadeLocation {\n Interior = \"Interior\",\n Between = \"Between\",\n Exterior = \"Exterior\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum SHWEquipmentType {\n Gas_WaterHeater = \"Gas_WaterHeater\",\n Electric_WaterHeater = \"Electric_WaterHeater\",\n HeatPump_WaterHeater = \"HeatPump_WaterHeater\",\n Gas_TanklessHeater = \"Gas_TanklessHeater\",\n Electric_TanklessHeater = \"Electric_TanklessHeater\",\n District_WaterHeater = \"District_WaterHeater\",\n District_TanklessHeater = \"District_TanklessHeater\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum SlatOrientation {\n Horizontal = \"Horizontal\",\n Vertical = \"Vertical\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VAVEquipmentType {\n VAV_Chiller_Boiler = \"VAV_Chiller_Boiler\",\n VAV_Chiller_ASHP = \"VAV_Chiller_ASHP\",\n VAV_Chiller_DHW = \"VAV_Chiller_DHW\",\n VAV_Chiller_PFP = \"VAV_Chiller_PFP\",\n VAV_Chiller_GasCoil = \"VAV_Chiller_GasCoil\",\n VAV_ACChiller_Boiler = \"VAV_ACChiller_Boiler\",\n VAV_ACChiller_ASHP = \"VAV_ACChiller_ASHP\",\n VAV_ACChiller_DHW = \"VAV_ACChiller_DHW\",\n VAV_ACChiller_PFP = \"VAV_ACChiller_PFP\",\n VAV_ACChiller_GasCoil = \"VAV_ACChiller_GasCoil\",\n VAV_DCW_Boiler = \"VAV_DCW_Boiler\",\n VAV_DCW_ASHP = \"VAV_DCW_ASHP\",\n VAV_DCW_DHW = \"VAV_DCW_DHW\",\n VAV_DCW_PFP = \"VAV_DCW_PFP\",\n VAV_DCW_GasCoil = \"VAV_DCW_GasCoil\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VentilationMethod {\n Sum = \"Sum\",\n Max = \"Max\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VentilationType {\n Exhaust = \"Exhaust\",\n Intake = \"Intake\",\n Balanced = \"Balanced\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum Vintages {\n ASHRAE_2019 = \"ASHRAE_2019\",\n ASHRAE_2016 = \"ASHRAE_2016\",\n ASHRAE_2013 = \"ASHRAE_2013\",\n ASHRAE_2010 = \"ASHRAE_2010\",\n ASHRAE_2007 = \"ASHRAE_2007\",\n ASHRAE_2004 = \"ASHRAE_2004\",\n DOE_Ref_1980_2004 = \"DOE_Ref_1980_2004\",\n DOE_Ref_Pre_1980 = \"DOE_Ref_Pre_1980\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VRFEquipmentType {\n VRF = \"VRF\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VRFwithDOASEquipmentType {\n DOAS_VRF = \"DOAS_VRF\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum WindowACEquipmentType {\n WindowAC_ElectricBaseboard = \"WindowAC_ElectricBaseboard\",\n WindowAC_BoilerBaseboard = \"WindowAC_BoilerBaseboard\",\n WindowAC_ASHPBaseboard = \"WindowAC_ASHPBaseboard\",\n WindowAC_DHWBaseboard = \"WindowAC_DHWBaseboard\",\n WindowAC_Furnace = \"WindowAC_Furnace\",\n WindowAC_GasHeaters = \"WindowAC_GasHeaters\",\n WindowAC = \"WindowAC\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum WSHPEquipmentType {\n WSHP_FluidCooler_Boiler = \"WSHP_FluidCooler_Boiler\",\n WSHP_CoolingTower_Boiler = \"WSHP_CoolingTower_Boiler\",\n WSHP_GSHP = \"WSHP_GSHP\",\n WSHP_DCW_DHW = \"WSHP_DCW_DHW\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum WSHPwithDOASEquipmentType {\n DOAS_WSHP_FluidCooler_Boiler = \"DOAS_WSHP_FluidCooler_Boiler\",\n DOAS_WSHP_CoolingTower_Boiler = \"DOAS_WSHP_CoolingTower_Boiler\",\n DOAS_WSHP_GSHP = \"DOAS_WSHP_GSHP\",\n DOAS_WSHP_DCW_DHW = \"DOAS_WSHP_DCW_DHW\",\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,8BAAO;;;ACDN,IAAAA,0BAA8H;AAC/H,IAAAC,4BAAyD;;;ACDzD,+BAAgC;AAEzB,SAAS,cAAgC,KAAkB,OAAe;AAE7E,MAAI;AACJ,MAAI;AACA,mBAAW,0CAAgB,KAAK,OAAO,EAAE,0BAA0B,MAAM,mBAAmB,OAAO,qBAAqB,KAAK,CAAC;AAAA,EAClI,SAAS,GAAG;AAER,eAAW;AAAA,EACf;AAEA,aAAW,OAAO,OAAO,KAAK,QAAQ,GAAG;AACrC,UAAM,QAAS,SAAiB,GAAG;AAGnC,UAAM,eAAe,QAAQ,YAAY,eAAe,UAAU,GAAG;AAErE,QACI,SACA,OAAO,UAAU,YACjB,gBACA,OAAO,iBAAiB,cACxB,iBAAiB,UACjB,EAAE,iBAAiB,eACrB;AACE,MAAC,SAAiB,GAAG,IAAI,cAAc,cAAc,KAAK;AAAA,IAC9D;AAAA,EACJ;AAEA,SAAO;AACX;;;AC/BC,6BAAqF;AACtF,IAAAC,4BAAyD;AAGlD,IAAe,uBAAf,MAAoC;AAAA,EASvC,cAAc;AAHd;AAAA,gBAAe;AAIX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGA,KAAK,OAAa;AAAA,EAElB;AAAA,EAGA,OAAO,OAAO,MAAiC;AAC3C,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,UAAM,IAAI,MAAM,mEAAmE;AAAA,EACvF;AAAA,EAEH,OAAO,MAAY;AACZ,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,eAAO,2CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,iCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAjCI;AAAA,MALC,gCAAK,MAAM,MAAM;AAAA,MACjB,iCAAS;AAAA,MACT,mCAAW;AAAA,MACX,kCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAJN,qBAMlB;;;AFJG,IAAM,sBAAN,MAAM,4BAA2B,qBAAqB;AAAA,EAwBzD,cAAc;AACV,UAAM;AAZV;AAAA,uBAAuB;AAQvB;AAAA,gBAAe;AAKX,SAAK,cAAc;AACnB,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,qBAAoB,KAAK;AACnD,WAAK,YAAY,IAAI;AACrB,WAAK,cAAc,IAAI,eAAe;AACtC,WAAK,OAAO,IAAI,QAAQ;AAAA,IAC5B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA+B;AAClD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,oBAAmB;AACpC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,WAAW,IAAI,KAAK;AACzB,SAAK,cAAc,IAAI,KAAK,eAAe;AAC3C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,2CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,kCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AApEI;AAAA,MALC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,mCAAU;AAAA,MACV,kCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GAJpB,oBAMT;AAOA;AAAA,MALC,gCAAK,MAAM,OAAO;AAAA,MAClB,mCAAU;AAAA,MACV,oCAAW;AAAA,MACX,kCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAXvB,oBAaT;AAQA;AAAA,MANC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,iCAAQ,sBAAsB;AAAA,MAC9B,kCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAnBf,oBAqBT;AArBG,IAAM,qBAAN;;;AGNN,IAAAC,0BAAiJ;AAClJ,IAAAC,4BAAyD;AAKlD,IAAM,gBAAN,MAAM,sBAAqB,qBAAqB;AAAA,EAiDnD,cAAc;AACV,UAAM;AApCV;AAAA,kBAAiB;AASjB;AAAA,iBAAgB;AAQhB;AAAA,yBAA0B,CAAC,GAAG,CAAC;AAO/B;AAAA,yBAAyB;AAQzB;AAAA,gBAAe;AAKX,SAAK,SAAS;AACd,SAAK,QAAQ;AACb,SAAK,gBAAgB,CAAC,GAAG,CAAC;AAC1B,SAAK,gBAAgB;AACrB,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,eAAc,KAAK;AAC7C,WAAK,QAAQ,IAAI;AACjB,WAAK,SAAS,IAAI,UAAU;AAC5B,WAAK,QAAQ,IAAI,SAAS;AAC1B,WAAK,gBAAgB,IAAI,iBAAiB,CAAC,GAAG,CAAC;AAC/C,WAAK,gBAAgB,IAAI,iBAAiB;AAC1C,WAAK,OAAO,IAAI,QAAQ;AAAA,IAC5B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAyB;AAC5C,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,cAAa;AAC9B,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,OAAO,IAAI,KAAK;AACrB,SAAK,QAAQ,IAAI,KAAK,UAAU;AAChC,SAAK,OAAO,IAAI,KAAK,SAAS;AAC9B,SAAK,gBAAgB,IAAI,KAAK,iBAAiB,CAAC,GAAG,CAAC;AACpD,SAAK,iBAAiB,IAAI,KAAK,iBAAiB;AAChD,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,2CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,kCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAtGI;AAAA,MALC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,mCAAU;AAAA,MACV,kCAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,GAJhB,cAMT;AAQA;AAAA,MANC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,6BAAI,CAAC;AAAA,MACL,kCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAZjB,cAcT;AASA;AAAA,MAPC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,6BAAI,GAAG;AAAA,MACP,6BAAI,EAAE;AAAA,MACN,kCAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,GArBhB,cAuBT;AAQA;AAAA,MANC,iCAAQ;AAAA,MACR,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS,CAAC,GAAE,EAAE,MAAM,KAAK,CAAC;AAAA,MAC1B,oCAAW;AAAA,MACX,kCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GA7BzB,cA+BT;AAOA;AAAA,MALC,gCAAK,MAAM,OAAO;AAAA,MAClB,mCAAU;AAAA,MACV,oCAAW;AAAA,MACX,kCAAO,EAAE,MAAM,kBAAkB,CAAC;AAAA,GApC1B,cAsCT;AAQA;AAAA,MANC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,iCAAQ,gBAAgB;AAAA,MACxB,kCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GA5Cf,cA8CT;AA9CG,IAAM,eAAN;;;ACNN,IAAAC,0BAA8F;AAC/F,IAAAC,4BAAyD;AAKlD,IAAM,wBAAN,MAAM,8BAA6B,qBAAqB;AAAA,EAe3D,cAAc;AACV,UAAM;AAJV;AAAA,gBAAe;AAKX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,uBAAsB,KAAK;AACrD,WAAK,WAAW,IAAI;AACpB,WAAK,OAAO,IAAI,QAAQ;AAAA,IAC5B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAiC;AACpD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,sBAAqB;AACtC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,WAAW,IAAI,KAAK;AACzB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,2CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,kCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AA1DI;AAAA,MAHC,oCAAW;AAAA,MACX,kCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GAFpB,sBAIT;AAQA;AAAA,MANC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,iCAAQ,wBAAwB;AAAA,MAChC,kCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAVf,sBAYT;AAZG,IAAM,uBAAN;;;ACHA,IAAK,uBAAL,kBAAKC,0BAAL;AACH,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,yBAAsB;AACtB,EAAAA,sBAAA,0BAAuB;AACvB,EAAAA,sBAAA,oCAAiC;AACjC,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,mBAAgB;AAChB,EAAAA,sBAAA,wBAAqB;AAPb,SAAAA;AAAA,GAAA;;;ACAL,IAAK,yBAAL,kBAAKC,4BAAL;AACH,EAAAA,wBAAA,uBAAoB;AACpB,EAAAA,wBAAA,qBAAkB;AAClB,EAAAA,wBAAA,mBAAgB;AAChB,EAAAA,wBAAA,kBAAe;AAJP,SAAAA;AAAA,GAAA;;;ACHX,IAAAC,2BAA6I;AAC9I,IAAAC,6BAAyD;;;ACDxD,IAAAC,0BAAyH;AAC1H,IAAAC,4BAAyD;;;ACDxD,IAAAC,0BAAmH;AACpH,IAAAC,4BAAyD;AAIlD,IAAM,oCAAN,MAAM,0CAAyC,qBAAqB;AAAA,EAqCvE,cAAc;AACV,UAAM;AA/BV;AAAA,gBAAe;AAgCX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,mCAAkC,KAAK;AACjE,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,kBAAkB,IAAI;AAC3B,WAAK,4BAA4B,IAAI;AACrC,WAAK,0BAA0B,IAAI;AAAA,IACvC;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA6C;AAChE,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,kCAAiC;AAClD,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,kBAAkB,IAAI,KAAK;AAChC,SAAK,6BAA6B,IAAI,KAAK;AAC3C,SAAK,2BAA2B,IAAI,KAAK;AACzC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,2CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,kCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAjFI;AAAA,MANC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,gCAAO,kCAAkC;AAAA,MACzC,kCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,kCAOT;AAAA;AASA;AAAA,MAPC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,mCAAU,CAAC;AAAA,MACX,mCAAU,GAAG;AAAA,MACb,kCAAO,EAAE,MAAM,mBAAmB,CAAC;AAAA,GAd3B,kCAgBT;AAAA;AASA;AAAA,MAPC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,mCAAU,CAAC;AAAA,MACX,mCAAU,GAAG;AAAA,MACb,kCAAO,EAAE,MAAM,8BAA8B,CAAC;AAAA,GAvBtC,kCAyBT;AAAA;AASA;AAAA,MAPC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,mCAAU,CAAC;AAAA,MACX,mCAAU,GAAG;AAAA,MACb,kCAAO,EAAE,MAAM,4BAA4B,CAAC;AAAA,GAhCpC,kCAkCT;AAlCG,IAAM,mCAAN;;;ACLN,IAAAC,0BAA6F;AAC9F,IAAAC,4BAAyD;AAIlD,IAAM,sCAAN,MAAM,4CAA2C,qBAAqB;AAAA,EAiBzE,cAAc;AACV,UAAM;AAXV;AAAA,gBAAe;AAYX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,qCAAoC,KAAK;AACnE,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,cAAc,IAAI;AAAA,IAC3B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA+C;AAClE,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,oCAAmC;AACpD,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,cAAc,IAAI,KAAK;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,2CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,kCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAzDI;AAAA,MANC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,gCAAO,oCAAoC;AAAA,MAC3C,kCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,oCAOT;AAAA;AAOA;AAAA,MALC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,kCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAZvB,oCAcT;AAdG,IAAM,qCAAN;;;AFEA,IAAM,8BAAN,MAAM,oCAAmC,qBAAqB;AAAA,EA0BjE,cAAc;AACV,UAAM;AApBV;AAAA,gBAAe;AAqBX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,6BAA4B,KAAK;AAC3D,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,SAAS,IAAI;AAClB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAuC;AAC1D,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,4BAA2B;AAC5C,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,QAAQ,IAAI,KAAK;AACtB,SAAK,UAAU,IAAI,KAAK;AACxB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,2CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,kCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AApEI;AAAA,MANC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,gCAAO,4BAA4B;AAAA,MACnC,kCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,4BAOT;AAAA;AAQA;AAAA,MANC,gCAAK,MAAM,gCAAgC;AAAA,MAC3C,oCAAW,gCAAgC;AAAA,MAC3C,wCAAe;AAAA,MACf,oCAAW;AAAA,MACX,kCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAbjB,4BAeT;AAAA;AAQA;AAAA,MANC,gCAAK,MAAM,kCAAkC;AAAA,MAC7C,oCAAW,kCAAkC;AAAA,MAC7C,wCAAe;AAAA,MACf,oCAAW;AAAA,MACX,kCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GArBnB,4BAuBT;AAvBG,IAAM,6BAAN;;;ADHP,IAAAC,2BAA6B;;;AIJ5B,IAAAC,2BAA6I;AAC9I,IAAAC,6BAAyD;;;ACDxD,IAAAC,0BAAsI;AACvI,IAAAC,4BAAyD;;;ACDzD,IAAAC,0BAA0E;AAInE,SAAS,oBAAoB,mBAAuC;AACvE,SAAO,SAAU,QAAgB,cAAsB;AACnD,mDAAkB;AAAA,MACd,MAAM;AAAA,MACN,QAAQ,OAAO;AAAA,MACf;AAAA,MACA,SAAS;AAAA,MACT,WAAW;AAAA,QACP,SAAS,OAAY,MAA2B;AAC5C,cAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,cAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO;AAClC,iBAAO,MAAM;AAAA,YACT,CAAC,QAAa,MAAM,QAAQ,GAAG,KAAK,IAAI;AAAA,cACpC,CAAC,WACE,MAAM,QAAQ,MAAM,KAAK,OAAO;AAAA,gBAC/B,CAAC,QAAa,OAAO,QAAQ;AAAA,cAC/B,KACA,OAAO,WAAW;AAAA,YACxB;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAe,MAA2B;AACtC,iBAAO,GAAG,KAAK,QAAQ;AAAA,QAC3B;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AAIO,SAAS,qBAAqB,mBAAuC;AACxE,SAAO,SAAU,QAAgB,cAAsB;AACnD,mDAAkB;AAAA,MACd,MAAM;AAAA,MACN,QAAQ,OAAO;AAAA,MACf;AAAA,MACA,SAAS;AAAA,MACT,WAAW;AAAA,QACP,SAAS,OAAY,MAA2B;AAC5C,cAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,cAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO;AAClC,iBAAO,MAAM;AAAA,YACT,CAAC,QAAa,MAAM,QAAQ,GAAG,KAAK,IAAI;AAAA,cACpC,CAAC,WACE,MAAM,QAAQ,MAAM,KAAK,OAAO;AAAA,gBAC/B,CAAC,QAAa,OAAO,UAAU,GAAG;AAAA,cACpC,KACA,OAAO,UAAU,MAAM;AAAA,YAC7B;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAe,MAA2B;AACtC,iBAAO,GAAG,KAAK,QAAQ;AAAA,QAC3B;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AAIO,SAAS,oBAAoB,mBAAuC;AACvE,SAAO,SAAU,QAAgB,cAAsB;AACnD,mDAAkB;AAAA,MACd,MAAM;AAAA,MACN,QAAQ,OAAO;AAAA,MACf;AAAA,MACA,SAAS;AAAA,MACT,WAAW;AAAA,QACP,SAAS,OAAY,MAA2B;AAC5C,cAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,cAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO;AAClC,iBAAO,MAAM;AAAA,YACT,CAAC,QAAa,MAAM,QAAQ,GAAG,KAAK,IAAI;AAAA,cACpC,CAAC,WACE,MAAM,QAAQ,MAAM,KAAK,OAAO;AAAA,gBAC/B,CAAC,QAAa,OAAO,QAAQ;AAAA,cAC/B,KACA,OAAO,WAAW;AAAA,YACxB;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAe,MAA2B;AACtC,iBAAO,GAAG,KAAK,QAAQ;AAAA,QAC3B;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;;;ADtFO,IAAM,sBAAN,MAAM,4BAA2B,qBAAqB;AAAA,EAuCzD,cAAc;AACV,UAAM;AAZV;AAAA,gBAAe;AAaX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,qBAAoB,KAAK;AACnD,WAAK,WAAW,IAAI;AACpB,WAAK,YAAY,IAAI;AACrB,WAAK,WAAW,IAAI;AACpB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA+B;AAClD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,oBAAmB;AACpC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,WAAW,IAAI,KAAK;AACzB,SAAK,WAAW,IAAI,KAAK;AACzB,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,WAAW,IAAI,KAAK;AACzB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,2CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,kCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAtFI;AAAA,MALC,iCAAQ;AAAA,EACR,oBAAoB;AAAA,MACpB,mCAAU;AAAA,MACV,kCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GAJpB,oBAMT;AAAA;AAOA;AAAA,MALC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,mCAAU;AAAA,MACV,kCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GAXpB,oBAaT;AAAA;AAOA;AAAA,MALC,iCAAQ;AAAA,EACR,oBAAoB;AAAA,MACpB,mCAAU;AAAA,MACV,kCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GAlBnB,oBAoBT;AAQA;AAAA,MANC,gCAAK,MAAM,MAAM;AAAA,MACjB,kCAAS;AAAA,MACT,oCAAW;AAAA,MACX,gCAAO,oBAAoB;AAAA,MAC3B,kCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GA1Bf,oBA4BT;AAAA;AAQA;AAAA,MANC,iCAAQ;AAAA,MACR,gCAAK,MAAM,OAAO;AAAA,MAClB,mCAAU,EAAE,MAAM,KAAK,CAAC;AAAA,MACxB,oCAAW;AAAA,MACX,kCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GAlCpB,oBAoCT;AApCG,IAAM,qBAAN;;;ADFP,6BAAuB;AACvB,IAAAC,0BAAuB;AAGhB,IAAM,qBAAN,MAAM,2BAA0B,qBAAqB;AAAA,EA8BxD,cAAc;AACV,UAAM;AAbV;AAAA,gBAAe;AAcX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,oBAAmB,KAAK;AAClD,WAAK,WAAW,IAAI;AACpB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,uBAAuB,IAAI;AAAA,IACpC;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA8B;AACjD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,mBAAkB;AACnC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,uBAAuB,IAAI,KAAK;AACrC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AArEI;AAAA,MATC,kCAAQ;AAAA,MACR,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,MAC3B,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,SAAU,QAAO,8BAAO,OAAO,IAAI;AAAA,aAC7C,MAAM,SAAS,SAAU,QAAO,+BAAO,OAAO,IAAI;AAAA,QACtD,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GARO,mBAUT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,mBAAmB;AAAA,MAC1B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAhBf,mBAkBT;AAAA;AASA;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,kBAAkB;AAAA,MAC7B,qCAAW,oBAAoB,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7C,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,wBAAwB,CAAC;AAAA,GAzBhC,mBA2BT;AA3BG,IAAM,oBAAN;;;AJHP,IAAAC,2BAAqB;;;AONpB,IAAAC,2BAAiK;AAClK,IAAAC,6BAAyD;AAEzD,IAAAC,2BAA8B;AAC9B,IAAAA,2BAA6B;;;ACJ5B,IAAAC,2BAAuK;AACxK,IAAAC,6BAAyD;AAGzD,IAAAC,2BAA0B;;;ACJzB,IAAAC,2BAA4H;AAC7H,IAAAC,6BAAyD;AAMlD,IAAM,qBAAN,MAAM,2BAA0B,qBAAqB;AAAA,EAyBxD,cAAc;AACV,UAAM;AAZV;AAAA,gBAAe;AAaX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,oBAAmB,KAAK;AAClD,WAAK,WAAW,IAAI;AACpB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA8B;AACjD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,mBAAkB;AACnC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,WAAW,IAAI,KAAK;AACzB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AApEI;AAAA,MALC,kCAAQ;AAAA,EACR,oBAAoB;AAAA,MACpB,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GAJnB,mBAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,mBAAmB;AAAA,MAC1B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,mBAcT;AAAA;AAQA;AAAA,MANC,kCAAQ;AAAA,MACR,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU,EAAE,MAAM,KAAK,CAAC;AAAA,MACxB,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GApBpB,mBAsBT;AAtBG,IAAM,oBAAN;;;ACPN,IAAAC,2BAA4H;AAC7H,IAAAC,6BAAyD;AAMlD,IAAM,mBAAN,MAAM,yBAAwB,qBAAqB;AAAA,EAyBtD,cAAc;AACV,UAAM;AAZV;AAAA,gBAAe;AAaX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,kBAAiB,KAAK;AAChD,WAAK,WAAW,IAAI;AACpB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,WAAW,IAAI;AACpB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA4B;AAC/C,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,iBAAgB;AACjC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,WAAW,IAAI,KAAK;AACzB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AArEI;AAAA,MALC,kCAAQ;AAAA,EACR,oBAAoB;AAAA,MACpB,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GAJnB,iBAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,iBAAiB;AAAA,MACxB,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,iBAcT;AAAA;AAQA;AAAA,MANC,kCAAQ;AAAA,MACR,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU,EAAE,MAAM,KAAK,CAAC;AAAA,MACxB,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GApBpB,iBAsBT;AAtBG,IAAM,kBAAN;;;ACPN,IAAAC,2BAAkH;AACnH,IAAAC,6BAAyD;AAKlD,IAAM,kBAAN,MAAM,wBAAuB,qBAAqB;AAAA,EAiBrD,cAAc;AACV,UAAM;AAJV;AAAA,gBAAe;AAKX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,iBAAgB,KAAK;AAC/C,WAAK,QAAQ,IAAI;AACjB,WAAK,OAAO,IAAI,QAAQ;AAAA,IAC5B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA2B;AAC9C,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,gBAAe;AAChC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,OAAO,IAAI,KAAK;AACrB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AA1DI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,GAJhB,gBAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,gBAAgB;AAAA,MACvB,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,gBAcT;AAdG,IAAM,iBAAN;;;ACNN,IAAAC,2BAAkH;AACnH,IAAAC,6BAAyD;AAGzD,IAAAC,0BAA8B;AAGvB,IAAM,uBAAN,MAAM,6BAA4B,qBAAqB;AAAA,EAsB1D,cAAc;AACV,UAAM;AATV;AAAA,gBAAe;AAKf;AAAA,mBAAoC,IAAI,sCAAc;AAKlD,SAAK,OAAO;AACZ,SAAK,UAAU,IAAI,sCAAc;AAAA,EACrC;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,sBAAqB,KAAK;AACpD,WAAK,eAAe,IAAI;AACxB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,UAAU,IAAI,WAAW,IAAI,sCAAc;AAAA,IACpD;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAgC;AACnD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,qBAAoB;AACrC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,eAAe,IAAI,KAAK;AAC7B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,SAAS,IAAI,KAAK,WAAW,IAAI,sCAAc;AACpD,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAlEI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,gBAAgB,CAAC;AAAA,GAJxB,qBAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,qBAAqB;AAAA,MAC5B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,qBAcT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,UAAU,CAAC;AAAA,GAjBlB,qBAmBT;AAnBG,IAAM,sBAAN;;;ACPN,IAAAC,2BAAkH;AACnH,IAAAC,6BAAyD;AAGzD,IAAAC,0BAA8B;AAGvB,IAAM,wBAAN,MAAM,8BAA6B,qBAAqB;AAAA,EAsB3D,cAAc;AACV,UAAM;AATV;AAAA,gBAAe;AAKf;AAAA,mBAAoC,IAAI,sCAAc;AAKlD,SAAK,OAAO;AACZ,SAAK,UAAU,IAAI,sCAAc;AAAA,EACrC;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,uBAAsB,KAAK;AACrD,WAAK,gBAAgB,IAAI;AACzB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,UAAU,IAAI,WAAW,IAAI,sCAAc;AAAA,IACpD;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAiC;AACpD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,sBAAqB;AACtC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,gBAAgB,IAAI,KAAK;AAC9B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,SAAS,IAAI,KAAK,WAAW,IAAI,sCAAc;AACpD,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAlEI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GAJzB,sBAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,sBAAsB;AAAA,MAC7B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,sBAcT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,UAAU,CAAC;AAAA,GAjBlB,sBAmBT;AAnBG,IAAM,uBAAN;;;ALGP,IAAAC,2BAAuB;AACvB,IAAAA,2BAA6B;;;AMX5B,IAAAC,2BAA+G;AAChH,IAAAC,6BAAyD;AAKlD,IAAM,kBAAN,MAAM,wBAAuB,aAAa;AAAA,EAiB7C,cAAc;AACV,UAAM;AAJV;AAAA,gBAAe;AAKX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,iBAAgB,KAAK;AAC/C,WAAK,cAAc,IAAI;AACvB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,QAAQ,IAAI;AACjB,WAAK,SAAS,IAAI,UAAU;AAC5B,WAAK,QAAQ,IAAI,SAAS;AAC1B,WAAK,gBAAgB,IAAI,iBAAiB,CAAC,GAAG,CAAC;AAC/C,WAAK,gBAAgB,IAAI,iBAAiB;AAAA,IAC9C;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA2B;AAC9C,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,gBAAe;AAChC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,cAAc,IAAI,KAAK;AAC5B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AA/DI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,gCAAM;AAAA,MACN,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAJvB,gBAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,gBAAgB;AAAA,MACvB,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,gBAcT;AAdG,IAAM,iBAAN;;;ACNN,IAAAC,2BAAkH;AACnH,IAAAC,6BAAyD;AAKlD,IAAM,qBAAN,MAAM,2BAA0B,aAAa;AAAA,EAiBhD,cAAc;AACV,UAAM;AAJV;AAAA,gBAAe;AAKX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,oBAAmB,KAAK;AAClD,WAAK,WAAW,IAAI;AACpB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,QAAQ,IAAI;AACjB,WAAK,SAAS,IAAI,UAAU;AAC5B,WAAK,QAAQ,IAAI,SAAS;AAC1B,WAAK,gBAAgB,IAAI,iBAAiB,CAAC,GAAG,CAAC;AAC/C,WAAK,gBAAgB,IAAI,iBAAiB;AAAA,IAC9C;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA8B;AACjD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,mBAAkB;AACnC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AA/DI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GAJnB,mBAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,mBAAmB;AAAA,MAC1B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,mBAcT;AAdG,IAAM,oBAAN;;;APQP,IAAAC,2BAAqC;AACrC,IAAAA,2BAAyB;;;AQfxB,IAAAC,2BAA4H;AAC7H,IAAAC,6BAAyD;AAKlD,IAAM,YAAN,MAAM,kBAAiB,qBAAqB;AAAA,EA0B/C,cAAc;AACV,UAAM;AAbV;AAAA,gBAAe;AASf;AAAA,iBAAgB;AAKZ,SAAK,OAAO;AACZ,SAAK,QAAQ;AAAA,EACjB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,WAAU,KAAK;AACzC,WAAK,QAAQ,IAAI;AACjB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,QAAQ,IAAI,SAAS;AAAA,IAC9B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAqB;AACxC,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,UAAS;AAC1B,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,OAAO,IAAI,KAAK;AACrB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,OAAO,IAAI,KAAK,SAAS;AAC9B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAtEI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,GAJhB,UAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,UAAU;AAAA,MACjB,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,UAcT;AASA;AAAA,MAPC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,GAAG;AAAA,MACP,8BAAI,EAAE;AAAA,MACN,mCAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,GArBhB,UAuBT;AAvBG,IAAM,WAAN;;;ACNN,IAAAC,2BAAsI;AACvI,IAAAC,6BAAyD;AAMlD,IAAM,sBAAN,MAAM,4BAA2B,qBAAqB;AAAA,EAyCzD,cAAc;AACV,UAAM;AAZV;AAAA,gBAAe;AAaX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,qBAAoB,KAAK;AACnD,WAAK,UAAU,IAAI;AACnB,WAAK,SAAS,IAAI;AAClB,WAAK,UAAU,IAAI;AACnB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,WAAW,IAAI;AACpB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA+B;AAClD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,oBAAmB;AACpC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,SAAS,IAAI,KAAK;AACvB,SAAK,QAAQ,IAAI,KAAK;AACtB,SAAK,SAAS,IAAI,KAAK;AACvB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,WAAW,IAAI,KAAK;AACzB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAzFI;AAAA,MALC,kCAAQ;AAAA,EACR,oBAAoB;AAAA,MACpB,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,UAAU,CAAC;AAAA,GAJlB,oBAMT;AAAA;AAQA;AAAA,MANC,kCAAQ;AAAA,MACR,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS,CAAC,GAAE,EAAE,MAAM,KAAK,CAAC;AAAA,MAC1B,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAZjB,oBAcT;AAAA;AAQA;AAAA,MANC,kCAAQ;AAAA,MACR,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS,CAAC,GAAE,EAAE,MAAM,KAAK,CAAC;AAAA,MAC1B,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,UAAU,CAAC;AAAA,GApBlB,oBAsBT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,oBAAoB;AAAA,MAC3B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GA5Bf,oBA8BT;AAAA;AAQA;AAAA,MANC,kCAAQ;AAAA,MACR,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU,EAAE,MAAM,KAAK,CAAC;AAAA,MACxB,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GApCpB,oBAsCT;AAtCG,IAAM,qBAAN;;;ACPN,IAAAC,2BAAuH;AACxH,IAAAC,6BAAyD;AAKlD,IAAM,wBAAN,MAAM,8BAA6B,qBAAqB;AAAA,EA+C3D,cAAc;AACV,UAAM;AAZV;AAAA,gBAAe;AAQf;AAAA,8BAA6B;AAKzB,SAAK,OAAO;AACZ,SAAK,qBAAqB;AAAA,EAC9B;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,uBAAsB,KAAK;AACrD,WAAK,cAAc,IAAI;AACvB,WAAK,eAAe,IAAI;AACxB,WAAK,aAAa,IAAI;AACtB,WAAK,uBAAuB,IAAI;AAChC,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,qBAAqB,IAAI,sBAAsB;AACpD,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAiC;AACpD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,sBAAqB;AACtC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,cAAc,IAAI,KAAK;AAC5B,SAAK,eAAe,IAAI,KAAK;AAC7B,SAAK,aAAa,IAAI,KAAK;AAC3B,SAAK,uBAAuB,IAAI,KAAK;AACrC,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,qBAAqB,IAAI,KAAK,sBAAsB;AACzD,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAlGI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAJvB,sBAMT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,gBAAgB,CAAC;AAAA,GAXxB,sBAaT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GAlBtB,sBAoBT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,wBAAwB,CAAC;AAAA,GA1BhC,sBA4BT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,sBAAsB;AAAA,MAC7B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAlCf,sBAoCT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,sBAAsB,CAAC;AAAA,GA1C9B,sBA4CT;AA5CG,IAAM,uBAAN;;;ACNN,IAAAC,2BAAyH;AAC1H,IAAAC,6BAAyD;;;ACDxD,IAAAC,2BAAsG;AACvG,IAAAC,6BAAyD;;;ACDxD,IAAAC,2BAA6H;AAC9H,IAAAC,6BAAyD;AAKlD,IAAM,oBAAN,MAAM,0BAAyB,qBAAqB;AAAA,EAwBvD,cAAc;AACV,UAAM;AAXV;AAAA,gBAAe;AAOf;AAAA,qBAAqB;AAKjB,SAAK,OAAO;AACZ,SAAK,YAAY;AAAA,EACrB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,mBAAkB,KAAK;AACjD,WAAK,aAAa,IAAI;AACtB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,YAAY,IAAI,aAAa;AAClC,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA6B;AAChD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,kBAAiB;AAClC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,aAAa,IAAI,KAAK;AAC3B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,YAAY,IAAI,KAAK,aAAa;AACvC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AArEI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GAJtB,kBAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,kBAAkB;AAAA,MACzB,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,kBAcT;AAOA;AAAA,MALC,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU;AAAA,MACV,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GAnBrB,kBAqBT;AArBG,IAAM,mBAAN;;;ACNN,IAAAC,2BAA6H;AAC9H,IAAAC,6BAAyD;AAKlD,IAAM,qBAAN,MAAM,2BAA0B,qBAAqB;AAAA,EAwBxD,cAAc;AACV,UAAM;AAXV;AAAA,gBAAe;AAOf;AAAA,qBAAqB;AAKjB,SAAK,OAAO;AACZ,SAAK,YAAY;AAAA,EACrB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,oBAAmB,KAAK;AAClD,WAAK,cAAc,IAAI;AACvB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,YAAY,IAAI,aAAa;AAClC,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA8B;AACjD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,mBAAkB;AACnC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,cAAc,IAAI,KAAK;AAC5B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,YAAY,IAAI,KAAK,aAAa;AACvC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AArEI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAJvB,mBAMT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,mBAAmB;AAAA,MAC1B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAZf,mBAcT;AAOA;AAAA,MALC,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU;AAAA,MACV,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GAnBrB,mBAqBT;AArBG,IAAM,oBAAN;;;ACNN,IAAAC,2BAAkH;AACnH,IAAAC,6BAAyD;AAKlD,IAAM,gBAAN,MAAM,sBAAqB,qBAAqB;AAAA,EA+BnD,cAAc;AACV,UAAM;AAXV;AAAA,gBAAe;AAOf;AAAA,sBAAqB;AAKjB,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,EACtB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,eAAc,KAAK;AAC7C,WAAK,QAAQ,IAAI;AACjB,WAAK,SAAS,IAAI;AAClB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,aAAa,IAAI,cAAc;AACpC,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAyB;AAC5C,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,cAAa;AAC9B,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,OAAO,IAAI,KAAK;AACrB,SAAK,QAAQ,IAAI,KAAK;AACtB,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,aAAa,IAAI,KAAK,cAAc;AACzC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AA9EI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,GAJhB,cAMT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAXjB,cAaT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,cAAc;AAAA,MACrB,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAnBf,cAqBT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GA1BtB,cA4BT;AA5BG,IAAM,eAAN;;;AHSA,IAAM,8BAAN,MAAM,oCAAmC,qBAAqB;AAAA,EAmDjE,cAAc;AACV,UAAM;AA7CV;AAAA,gBAAe;AA8CX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,6BAA4B,KAAK;AAC3D,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,gBAAgB,IAAI;AACzB,WAAK,aAAa,IAAI;AACtB,WAAK,oBAAoB,IAAI;AAC7B,WAAK,qBAAqB,IAAI;AAAA,IAClC;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAuC;AAC1D,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,4BAA2B;AAC5C,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,gBAAgB,IAAI,KAAK;AAC9B,SAAK,aAAa,IAAI,KAAK;AAC3B,SAAK,oBAAoB,IAAI,KAAK;AAClC,SAAK,qBAAqB,IAAI,KAAK;AACnC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAjGI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,4BAA4B;AAAA,MACnC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,4BAOT;AAAA;AAOA;AAAA,MALC,kCAAQ;AAAA,EACR,oBAAoB;AAAA,MACpB,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GAZzB,4BAcT;AAAA;AAOA;AAAA,MALC,kCAAQ;AAAA,EACR,oBAAoB;AAAA,MACpB,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GAnBtB,4BAqBT;AAAA;AAeA;AAAA,MAbC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,qBAAqB,CAAC;AAAA,MACrC,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,eAAgB,QAAO,aAAa,OAAO,IAAI;AAAA,aACzD,MAAM,SAAS,mBAAoB,QAAO,iBAAiB,OAAO,IAAI;AAAA,aACtE,MAAM,SAAS,oBAAqB,QAAO,kBAAkB,OAAO,IAAI;AAAA,aACxE,MAAM,SAAS,uBAAwB,QAAO,qBAAqB,OAAO,IAAI;AAAA,aAC9E,MAAM,SAAS,qBAAsB,QAAO,mBAAmB,OAAO,IAAI;AAAA,aAC1E,MAAM,SAAS,kBAAmB,QAAO,gBAAgB,OAAO,IAAI;AAAA,QACxE,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GAlCO,4BAoCT;AAAA;AAYA;AAAA,MAVC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,sBAAsB,CAAC;AAAA,MACtC,sCAAU,CAAC,EAAE,MAAM,MAAM;AACxB,UAAM,OAAO;AACb,QAAI,MAAM,SAAS,sBAAuB,QAAO,oBAAoB,OAAO,IAAI;AAAA,aACvE,MAAM,SAAS,uBAAwB,QAAO,qBAAqB,OAAO,IAAI;AAAA,aAC9E,MAAM,SAAS,oBAAqB,QAAO,kBAAkB,OAAO,IAAI;AAAA,QAC5E,QAAO;AAAA,EACd,CAAC;AAAA,GA9CQ,4BAgDT;AAhDG,IAAM,6BAAN;;;AIfN,IAAAC,2BAA6F;AAC9F,IAAAC,6BAAyD;AAGzD,IAAAC,0BAA8B;AAEvB,IAAM,wBAAN,MAAM,8BAA6B,qBAAqB;AAAA,EAmC3D,cAAc;AACV,UAAM;AA7BV;AAAA,gBAAe;AAKf;AAAA,wBAAyC,IAAI,sCAAc;AAK3D;AAAA,uBAAwC,IAAI,sCAAc;AAK1D;AAAA,wBAAyC,IAAI,sCAAc;AAK3D;AAAA,0BAA2C,IAAI,sCAAc;AAK7D;AAAA,yBAA0C,IAAI,sCAAc;AAKxD,SAAK,OAAO;AACZ,SAAK,eAAe,IAAI,sCAAc;AACtC,SAAK,cAAc,IAAI,sCAAc;AACrC,SAAK,eAAe,IAAI,sCAAc;AACtC,SAAK,iBAAiB,IAAI,sCAAc;AACxC,SAAK,gBAAgB,IAAI,sCAAc;AAAA,EAC3C;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,uBAAsB,KAAK;AACrD,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,eAAe,IAAI,gBAAgB,IAAI,sCAAc;AAC1D,WAAK,cAAc,IAAI,eAAe,IAAI,sCAAc;AACxD,WAAK,eAAe,IAAI,gBAAgB,IAAI,sCAAc;AAC1D,WAAK,iBAAiB,IAAI,kBAAkB,IAAI,sCAAc;AAC9D,WAAK,gBAAgB,IAAI,iBAAiB,IAAI,sCAAc;AAAA,IAChE;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAiC;AACpD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,sBAAqB;AACtC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,eAAe,IAAI,KAAK,gBAAgB,IAAI,sCAAc;AAC/D,SAAK,eAAe,IAAI,KAAK,eAAe,IAAI,sCAAc;AAC9D,SAAK,gBAAgB,IAAI,KAAK,gBAAgB,IAAI,sCAAc;AAChE,SAAK,mBAAmB,IAAI,KAAK,kBAAkB,IAAI,sCAAc;AACrE,SAAK,iBAAiB,IAAI,KAAK,iBAAiB,IAAI,sCAAc;AAClE,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAxFI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,sBAAsB;AAAA,MAC7B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,sBAOT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,gBAAgB,CAAC;AAAA,GAVxB,sBAYT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,gBAAgB,CAAC;AAAA,GAfxB,sBAiBT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GApBzB,sBAsBT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,oBAAoB,CAAC;AAAA,GAzB5B,sBA2BT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,kBAAkB,CAAC;AAAA,GA9B1B,sBAgCT;AAhCG,IAAM,uBAAN;;;ACNN,IAAAC,2BAAuK;AACxK,IAAAC,6BAAyD;AAGzD,IAAAC,0BAAmC;AACnC,IAAAA,0BAAgC;AAChC,IAAAA,0BAA2C;AAC3C,IAAAA,0BAA+B;AAC/B,IAAAA,2BAAmC;AAE5B,IAAM,kCAAN,MAAM,wCAAuC,qBAAqB;AAAA,EAwIrE,cAAc;AACV,UAAM;AAlIV;AAAA,gBAAe;AAmIX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,iCAAgC,KAAK;AAC/D,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,kBAAkB,IAAI;AAC3B,WAAK,cAAc,IAAI;AACvB,WAAK,OAAO,IAAI;AAChB,WAAK,MAAM,IAAI;AACf,WAAK,cAAc,IAAI;AACvB,WAAK,gBAAgB,IAAI;AACzB,WAAK,yBAAyB,IAAI;AAClC,WAAK,oBAAoB,IAAI;AAC7B,WAAK,eAAe,IAAI;AACxB,WAAK,kBAAkB,IAAI;AAC3B,WAAK,eAAe,IAAI;AACxB,WAAK,qBAAqB,IAAI;AAC9B,WAAK,oBAAoB,IAAI;AAC7B,WAAK,oBAAoB,IAAI;AAC7B,WAAK,OAAO,IAAI;AAAA,IACpB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA2C;AAC9D,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,gCAA+B;AAChD,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,kBAAkB,IAAI,KAAK;AAChC,SAAK,cAAc,IAAI,KAAK;AAC5B,SAAK,MAAM,IAAI,KAAK;AACpB,SAAK,KAAK,IAAI,KAAK;AACnB,SAAK,cAAc,IAAI,KAAK;AAC5B,SAAK,gBAAgB,IAAI,KAAK;AAC9B,SAAK,0BAA0B,IAAI,KAAK;AACxC,SAAK,qBAAqB,IAAI,KAAK;AACnC,SAAK,gBAAgB,IAAI,KAAK;AAC9B,SAAK,kBAAkB,IAAI,KAAK;AAChC,SAAK,eAAe,IAAI,KAAK;AAC7B,SAAK,qBAAqB,IAAI,KAAK;AACnC,SAAK,qBAAqB,IAAI,KAAK;AACnC,SAAK,qBAAqB,IAAI,KAAK;AACnC,SAAK,MAAM,IAAI,KAAK;AACpB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AA5MI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,gCAAgC;AAAA,MACvC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,gCAOT;AAAA;AASA;AAAA,MAPC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,oCAAU,CAAC;AAAA,MACX,oCAAU,GAAG;AAAA,MACb,mCAAO,EAAE,MAAM,mBAAmB,CAAC;AAAA,GAd3B,gCAgBT;AAAA;AASA;AAAA,MAPC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,oCAAU,CAAC;AAAA,MACX,oCAAU,GAAG;AAAA,MACb,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAvBvB,gCAyBT;AAAA;AASA;AAAA,MAPC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,oCAAU,CAAC;AAAA,MACX,oCAAU,GAAG;AAAA,MACb,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAhCf,gCAkCT;AAAA;AASA;AAAA,MAPC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,oCAAU,CAAC;AAAA,MACX,oCAAU,GAAG;AAAA,MACb,mCAAO,EAAE,MAAM,MAAM,CAAC;AAAA,GAzCd,gCA2CT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAjDvB,gCAmDT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GAzDzB,gCA2DT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,2BAA2B,CAAC;AAAA,GAjEnC,gCAmET;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,sBAAsB,CAAC;AAAA,GAzE9B,gCA2ET;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GAjFzB,gCAmFT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,mBAAmB,CAAC;AAAA,GAzF3B,gCA2FT;AAAA;AASA;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,uCAAe;AAAA,MAC1B,qCAAW,yCAAiB,EAAE,MAAM,KAAK,CAAC;AAAA,MAC1C,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,gBAAgB,CAAC;AAAA,GAlGxB,gCAoGT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,0CAAkB;AAAA,MAC7B,qCAAW,0CAAkB;AAAA,MAC7B,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,sBAAsB,CAAC;AAAA,GA1G9B,gCA4GT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,kDAA0B;AAAA,MACrC,qCAAW,kDAA0B;AAAA,MACrC,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,sBAAsB,CAAC;AAAA,GAlH9B,gCAoHT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,2CAAkB;AAAA,MAC7B,qCAAW,2CAAkB;AAAA,MAC7B,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,sBAAsB,CAAC;AAAA,GA1H9B,gCA4HT;AAAA;AASA;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,sCAAc;AAAA,MACzB,qCAAW,wCAAgB,EAAE,MAAM,KAAK,CAAC;AAAA,MACzC,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAnIf,gCAqIT;AArIG,IAAM,iCAAN;;;ACVN,IAAAC,2BAAsG;AACvG,IAAAC,6BAAyD;;;ACDxD,IAAAC,2BAA+G;AAChH,IAAAC,6BAAyD;;;ACElD,IAAK,uBAAL,kBAAKC,0BAAL;AACH,EAAAA,sBAAA,YAAS;AACT,EAAAA,sBAAA,cAAW;AACX,EAAAA,sBAAA,SAAM;AAHE,SAAAA;AAAA,GAAA;;;ADIL,IAAM,iCAAN,MAAM,uCAAsC,mBAAmB;AAAA,EAwBlE,cAAc;AACV,UAAM;AAlBV;AAAA,gBAAe;AAOf;AAAA,kBAAiB;AAOjB;AAAA;AAKI,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK;AAAA,EACT;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,gCAA+B,KAAK;AAC9D,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,SAAS,IAAI,UAAU;AAC5B,WAAK,eAAe,IAAI;AACxB,WAAK,YAAY,IAAI;AACrB,WAAK,cAAc,IAAI,eAAe;AAAA,IAC1C;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA0C;AAC7D,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,+BAA8B;AAC/C,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,QAAQ,IAAI,KAAK,UAAU;AAChC,SAAK,eAAe,IAAI,KAAK;AAC7B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAtEI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,+BAA+B;AAAA,MACtC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,+BAOT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAZjB,+BAcT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,iCAAO,oBAAoB;AAAA,MAC3B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,gBAAgB,CAAC;AAAA,GAnBxB,+BAqBT;AArBG,IAAM,gCAAN;;;AEPN,IAAAC,2BAA0H;AAC3H,IAAAC,6BAAyD;;;ACElD,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,UAAO;AACP,EAAAA,kBAAA,UAAO;AACP,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,SAAM;AAJE,SAAAA;AAAA,GAAA;;;ADIL,IAAM,6BAAN,MAAM,mCAAkC,mBAAmB;AAAA,EA+B9D,cAAc;AACV,UAAM;AAzBV;AAAA,gBAAe;AAOf;AAAA,kBAAiB;AAOjB;AAAA;AAOA;AAAA,2BAA2B;AAKvB,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK;AACL,SAAK,kBAAkB;AAAA,EAC3B;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,4BAA2B,KAAK;AAC1D,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,SAAS,IAAI,UAAU;AAC5B,WAAK,WAAW,IAAI;AACpB,WAAK,kBAAkB,IAAI,mBAAmB;AAC9C,WAAK,YAAY,IAAI;AACrB,WAAK,cAAc,IAAI,eAAe;AAAA,IAC1C;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAsC;AACzD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,2BAA0B;AAC3C,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,QAAQ,IAAI,KAAK,UAAU;AAChC,SAAK,WAAW,IAAI,KAAK;AACzB,SAAK,kBAAkB,IAAI,KAAK,mBAAmB;AACnD,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAhFI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,2BAA2B;AAAA,MAClC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,2BAOT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAZjB,2BAcT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,iCAAO,gBAAgB;AAAA,MACvB,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GAnBpB,2BAqBT;AAOA;AAAA,MALC,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU;AAAA,MACV,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,mBAAmB,CAAC;AAAA,GA1B3B,2BA4BT;AA5BG,IAAM,4BAAN;;;AEPN,IAAAC,2BAAuG;AACxG,IAAAC,6BAAyD;AAKlD,IAAM,qBAAN,MAAM,2BAA0B,mBAAmB;AAAA,EAwBtD,cAAc;AACV,UAAM;AAlBV;AAAA,gBAAe;AAOf;AAAA,kBAAiB;AAOjB;AAAA,sBAAqB;AAKjB,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,aAAa;AAAA,EACtB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,oBAAmB,KAAK;AAClD,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,SAAS,IAAI,UAAU;AAC5B,WAAK,aAAa,IAAI,cAAc;AACpC,WAAK,YAAY,IAAI;AACrB,WAAK,cAAc,IAAI,eAAe;AAAA,IAC1C;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA8B;AACjD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,mBAAkB;AACnC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,QAAQ,IAAI,KAAK,UAAU;AAChC,SAAK,aAAa,IAAI,KAAK,cAAc;AACzC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAtEI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,mBAAmB;AAAA,MAC1B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,mBAOT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAZjB,mBAcT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GAnBtB,mBAqBT;AArBG,IAAM,oBAAN;;;ACNN,IAAAC,2BAA6I;AAC9I,IAAAC,6BAAyD;AAEzD,IAAAC,2BAA8B;AAGvB,IAAM,2BAAN,MAAM,yBAAwB;AAAA,EA0DjC,cAAc;AApDd;AAAA,oBAAmB;AAanB;AAAA,sBAAuC,IAAI,uCAAc;AAQzD;AAAA,gBAAe;AAOf;AAAA,kBAAiB;AAOjB;AAAA,sBAAqB;AAcrB;AAAA,uBAAuB;AAInB,SAAK,WAAW;AAChB,SAAK,aAAa,IAAI,uCAAc;AACpC,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,cAAc;AAAA,EACvB;AAAA,EAGA,KAAK,OAAa;AAEd,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,0BAAyB,KAAK;AACxD,WAAK,WAAW,IAAI,YAAY;AAChC,WAAK,cAAc,IAAI;AACvB,WAAK,aAAa,IAAI,cAAc,IAAI,uCAAc;AACtD,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,SAAS,IAAI,UAAU;AAC5B,WAAK,aAAa,IAAI,cAAc;AACpC,WAAK,YAAY,IAAI;AACrB,WAAK,cAAc,IAAI,eAAe;AAAA,IAC1C;AAAA,EACJ;AAAA,EAGA,OAAO,OAAO,MAAoC;AAC9C,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,yBAAwB;AACzC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEH,OAAO,MAAY;AACZ,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,WAAW,IAAI,KAAK,YAAY;AACrC,SAAK,cAAc,IAAI,KAAK;AAC5B,SAAK,aAAa,IAAI,KAAK,cAAc,IAAI,uCAAc;AAC3D,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,QAAQ,IAAI,KAAK,UAAU;AAChC,SAAK,aAAa,IAAI,KAAK,cAAc;AACzC,SAAK,WAAW,IAAI,KAAK;AACzB,SAAK,cAAc,IAAI,KAAK,eAAe;AAC3C,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAlHI;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,gCAAM;AAAA,MACN,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GAJpB,yBAMT;AAAA;AAQA;AAAA,MANC,kCAAQ;AAAA,MACR,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS,CAAC,GAAE,EAAE,MAAM,KAAK,CAAC;AAAA,MAC1B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAZvB,yBAcT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GAjBtB,yBAmBT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,yBAAyB;AAAA,MAChC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAzBf,yBA2BT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAhCjB,yBAkCT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GAvCtB,yBAyCT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GA9CpB,yBAgDT;AAOA;AAAA,MALC,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU;AAAA,MACV,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GArDvB,yBAuDT;AAvDG,IAAM,0BAAN;;;ANGA,IAAM,oCAAN,MAAM,0CAAyC,qBAAqB;AAAA,EA8BvE,cAAc;AACV,UAAM;AAxBV;AAAA,gBAAe;AAyBX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,mCAAkC,KAAK;AACjE,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,cAAc,IAAI;AACvB,WAAK,iBAAiB,IAAI;AAAA,IAC9B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA6C;AAChE,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,kCAAiC;AAClD,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,cAAc,IAAI,KAAK;AAC5B,SAAK,iBAAiB,IAAI,KAAK;AAC/B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAxEI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,kCAAkC;AAAA,MACzC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,kCAOT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAZvB,kCAcT;AAAA;AAaA;AAAA,MAXC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,kBAAkB,CAAC;AAAA,MAClC,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,oBAAqB,QAAO,kBAAkB,OAAO,IAAI;AAAA,aACnE,MAAM,SAAS,0BAA2B,QAAO,wBAAwB,OAAO,IAAI;AAAA,aACpF,MAAM,SAAS,4BAA6B,QAAO,0BAA0B,OAAO,IAAI;AAAA,aACxF,MAAM,SAAS,gCAAiC,QAAO,8BAA8B,OAAO,IAAI;AAAA,QACpG,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GAzBO,kCA2BT;AA3BG,IAAM,mCAAN;;;APAA,IAAM,4BAAN,MAAM,kCAAiC,qBAAqB;AAAA,EA0C/D,cAAc;AACV,UAAM;AApCV;AAAA,gBAAe;AAqCX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,2BAA0B,KAAK;AACzD,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,SAAS,IAAI;AAClB,WAAK,WAAW,IAAI;AACpB,WAAK,OAAO,IAAI;AAChB,WAAK,aAAa,IAAI;AAAA,IAC1B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAqC;AACxD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,0BAAyB;AAC1C,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,QAAQ,IAAI,KAAK;AACtB,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,MAAM,IAAI,KAAK;AACpB,SAAK,YAAY,IAAI,KAAK;AAC1B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAxFI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,0BAA0B;AAAA,MACjC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,0BAOT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,8BAA8B;AAAA,MACzC,qCAAW,8BAA8B;AAAA,MACzC,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAbjB,0BAeT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,gCAAgC;AAAA,MAC3C,qCAAW,gCAAgC;AAAA,MAC3C,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GArBnB,0BAuBT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,oBAAoB;AAAA,MAC/B,qCAAW,oBAAoB;AAAA,MAC/B,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GA7Bf,0BA+BT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,0BAA0B;AAAA,MACrC,qCAAW,0BAA0B;AAAA,MACrC,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GArCrB,0BAuCT;AAvCG,IAAM,2BAAN;;;AXcP,IAAAC,2BAAwB;AAEjB,IAAM,UAAN,MAAM,gBAAe,sCAAa;AAAA,EA+JrC,cAAc;AACV,UAAM;AA5HV;AAAA,gBAAe;AAcf;AAAA,2BAA2B;AAO3B;AAAA,wBAAwB;AAOxB;AAAA,oBAAoB;AAOpB;AAAA,sBAAsB;AAQtB;AAAA,8BAA6B;AAQ7B;AAAA,4BAA2B;AA0EvB,SAAK,OAAO;AACZ,SAAK,kBAAkB;AACvB,SAAK,eAAe;AACpB,SAAK,WAAW;AAChB,SAAK,aAAa;AAClB,SAAK,qBAAqB;AAC1B,SAAK,mBAAmB;AAAA,EAC5B;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,SAAQ,KAAK;AACvC,WAAK,gBAAgB,IAAI;AACzB,WAAK,cAAc,IAAI;AACvB,WAAK,uBAAuB,IAAI;AAChC,WAAK,aAAa,IAAI;AACtB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,aAAa,IAAI;AACtB,WAAK,kBAAkB,IAAI,mBAAmB;AAC9C,WAAK,eAAe,IAAI,gBAAgB;AACxC,WAAK,WAAW,IAAI,YAAY;AAChC,WAAK,aAAa,IAAI,cAAc;AACpC,WAAK,qBAAqB,IAAI,sBAAsB;AACpD,WAAK,mBAAmB,IAAI,oBAAoB;AAChD,WAAK,OAAO,IAAI;AAChB,WAAK,qBAAqB,IAAI;AAC9B,WAAK,mBAAmB,IAAI;AAC5B,WAAK,oBAAoB,IAAI;AAC7B,WAAK,gBAAgB,IAAI;AACzB,WAAK,qBAAqB,IAAI;AAC9B,WAAK,aAAa,IAAI;AACtB,WAAK,cAAc,IAAI;AACvB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAmB;AACtC,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,QAAO;AACxB,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,gBAAgB,IAAI,KAAK;AAC9B,SAAK,cAAc,IAAI,KAAK;AAC5B,SAAK,yBAAyB,IAAI,KAAK;AACvC,SAAK,YAAY,IAAI,KAAK;AAC1B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,aAAa,IAAI,KAAK;AAC3B,SAAK,mBAAmB,IAAI,KAAK,mBAAmB;AACpD,SAAK,gBAAgB,IAAI,KAAK,gBAAgB;AAC9C,SAAK,WAAW,IAAI,KAAK,YAAY;AACrC,SAAK,aAAa,IAAI,KAAK,cAAc;AACzC,SAAK,sBAAsB,IAAI,KAAK,sBAAsB;AAC1D,SAAK,oBAAoB,IAAI,KAAK,oBAAoB;AACtD,SAAK,MAAM,IAAI,KAAK;AACpB,SAAK,qBAAqB,IAAI,KAAK;AACnC,SAAK,mBAAmB,IAAI,KAAK;AACjC,SAAK,oBAAoB,IAAI,KAAK;AAClC,SAAK,gBAAgB,IAAI,KAAK;AAC9B,SAAK,qBAAqB,IAAI,KAAK;AACnC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAjPI;AAAA,MALC,kCAAQ;AAAA,EACR,oBAAoB;AAAA,MACpB,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GAJzB,QAMT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAXvB,QAaT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,0BAA0B,CAAC;AAAA,GAlBlC,QAoBT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,wBAAwB;AAAA,MACnC,qCAAW,wBAAwB;AAAA,MACnC,yCAAe;AAAA,MACf,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GA1BrB,QA4BT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,QAAQ;AAAA,MACf,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAlCf,QAoCT;AAAA;AAOA;AAAA,MALC,kCAAQ;AAAA,EACR,oBAAoB;AAAA,MACpB,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GAzCtB,QA2CT;AAOA;AAAA,MALC,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU;AAAA,MACV,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,oBAAoB,CAAC;AAAA,GAhD5B,QAkDT;AAOA;AAAA,MALC,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU;AAAA,MACV,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GAvDzB,QAyDT;AAOA;AAAA,MALC,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU;AAAA,MACV,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GA9DpB,QAgET;AAOA;AAAA,MALC,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU;AAAA,MACV,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GArEtB,QAuET;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,uBAAuB,CAAC;AAAA,GA7E/B,QA+ET;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,qBAAqB,CAAC;AAAA,GArF7B,QAuFT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GA5Ff,QA8FT;AAAA;AAcA;AAAA,MAZC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,sBAAsB,CAAC;AAAA,MACtC,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,SAAU,QAAO,gCAAO,OAAO,IAAI;AAAA,aAC7C,MAAM,SAAS,WAAY,QAAO,kCAAS,OAAO,IAAI;AAAA,aACtD,MAAM,SAAS,UAAW,QAAO,iCAAQ,OAAO,IAAI;AAAA,aACpD,MAAM,SAAS,YAAa,QAAO,mCAAU,OAAO,IAAI;AAAA,aACxD,MAAM,SAAS,uBAAwB,QAAO,8CAAqB,OAAO,IAAI;AAAA,QAClF,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GA1GO,QA4GT;AAAA;AAeA;AAAA,MAbC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,oBAAoB,CAAC;AAAA,MACpC,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,eAAgB,QAAO,aAAa,OAAO,IAAI;AAAA,aACzD,MAAM,SAAS,mBAAoB,QAAO,iBAAiB,OAAO,IAAI;AAAA,aACtE,MAAM,SAAS,oBAAqB,QAAO,kBAAkB,OAAO,IAAI;AAAA,aACxE,MAAM,SAAS,uBAAwB,QAAO,qBAAqB,OAAO,IAAI;AAAA,aAC9E,MAAM,SAAS,qBAAsB,QAAO,mBAAmB,OAAO,IAAI;AAAA,aAC1E,MAAM,SAAS,kBAAmB,QAAO,gBAAgB,OAAO,IAAI;AAAA,QACxE,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GAzHO,QA2HT;AAAA;AAaA;AAAA,MAXC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,qBAAqB,CAAC;AAAA,MACrC,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,iBAAkB,QAAO,eAAe,OAAO,IAAI;AAAA,aAC7D,MAAM,SAAS,WAAY,QAAO,SAAS,OAAO,IAAI;AAAA,aACtD,MAAM,SAAS,oBAAqB,QAAO,kBAAkB,OAAO,IAAI;AAAA,aACxE,MAAM,SAAS,iBAAkB,QAAO,eAAe,OAAO,IAAI;AAAA,QACtE,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GAtIO,QAwIT;AAAA;AAQA;AAAA,MANC,kCAAQ;AAAA,MACR,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU,EAAE,MAAM,KAAK,CAAC;AAAA,MACxB,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GA9IzB,QAgJT;AAAA;AAYA;AAAA,MAVC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,sBAAsB,CAAC;AAAA,MACtC,sCAAU,CAAC,EAAE,MAAM,MAAM;AACxB,UAAM,OAAO;AACb,QAAI,MAAM,SAAS,sBAAuB,QAAO,oBAAoB,OAAO,IAAI;AAAA,aACvE,MAAM,SAAS,uBAAwB,QAAO,qBAAqB,OAAO,IAAI;AAAA,aAC9E,MAAM,SAAS,oBAAqB,QAAO,kBAAkB,OAAO,IAAI;AAAA,QAC5E,QAAO;AAAA,EACd,CAAC;AAAA,GA1JQ,QA4JT;AA5JG,IAAM,SAAN;;;AyBzBN,IAAAC,2BAAyH;AAC1H,IAAAC,6BAAyD;;;ACDxD,IAAAC,2BAAmH;AACpH,IAAAC,6BAAyD;AAIlD,IAAM,iCAAN,MAAM,uCAAsC,qBAAqB;AAAA,EAmBpE,cAAc;AACV,UAAM;AAbV;AAAA,gBAAe;AAcX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,gCAA+B,KAAK;AAC9D,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,kBAAkB,IAAI;AAAA,IAC/B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA0C;AAC7D,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,+BAA8B;AAC/C,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,kBAAkB,IAAI,KAAK;AAChC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AA3DI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,+BAA+B;AAAA,MACtC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,+BAOT;AAAA;AASA;AAAA,MAPC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,oCAAU,CAAC;AAAA,MACX,oCAAU,GAAG;AAAA,MACb,mCAAO,EAAE,MAAM,mBAAmB,CAAC;AAAA,GAd3B,+BAgBT;AAhBG,IAAM,gCAAN;;;ACLN,IAAAC,2BAA6F;AAC9F,IAAAC,6BAAyD;AAIlD,IAAM,mCAAN,MAAM,yCAAwC,qBAAqB;AAAA,EAiBtE,cAAc;AACV,UAAM;AAXV;AAAA,gBAAe;AAYX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,kCAAiC,KAAK;AAChE,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,cAAc,IAAI;AAAA,IAC3B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA4C;AAC/D,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,iCAAgC;AACjD,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,cAAc,IAAI,KAAK;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAzDI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,iCAAiC;AAAA,MACxC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,iCAOT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAZvB,iCAcT;AAdG,IAAM,kCAAN;;;AFEA,IAAM,2BAAN,MAAM,iCAAgC,qBAAqB;AAAA,EA0B9D,cAAc;AACV,UAAM;AApBV;AAAA,gBAAe;AAqBX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,0BAAyB,KAAK;AACxD,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,SAAS,IAAI;AAClB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAoC;AACvD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,yBAAwB;AACzC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,QAAQ,IAAI,KAAK;AACtB,SAAK,UAAU,IAAI,KAAK;AACxB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AApEI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,yBAAyB;AAAA,MAChC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,yBAOT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,6BAA6B;AAAA,MACxC,qCAAW,6BAA6B;AAAA,MACxC,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAbjB,yBAeT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,+BAA+B;AAAA,MAC1C,qCAAW,+BAA+B;AAAA,MAC1C,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GArBnB,yBAuBT;AAvBG,IAAM,0BAAN;;;AGJA,IAAK,YAAL,kBAAKC,eAAL;AACH,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,mBAAgB;AAChB,EAAAA,WAAA,iBAAc;AAHN,SAAAA;AAAA,GAAA;;;A7BOL,IAAM,SAAN,MAAM,eAAc,sCAAa;AAAA,EA4DpC,cAAc;AACV,UAAM;AArCV;AAAA,gBAAe;AAKf;AAAA,8BAA+C,IAAI,uCAAc;AAKjE;AAAA,uBAAwC,IAAI,uCAAc;AAQ1D;AAAA,sBAAqB;AAerB;AAAA;AAKI,SAAK,OAAO;AACZ,SAAK,qBAAqB,IAAI,uCAAc;AAC5C,SAAK,cAAc,IAAI,uCAAc;AACrC,SAAK,aAAa;AAClB,SAAK;AAAA,EACT;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,QAAO,KAAK;AACtC,WAAK,UAAU,IAAI;AACnB,WAAK,aAAa,IAAI;AACtB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,qBAAqB,IAAI,sBAAsB,IAAI,uCAAc;AACtE,WAAK,cAAc,IAAI,eAAe,IAAI,uCAAc;AACxD,WAAK,aAAa,IAAI,cAAc;AACpC,WAAK,OAAO,IAAI;AAChB,WAAK,YAAY,IAAI;AACrB,WAAK,aAAa,IAAI;AACtB,WAAK,cAAc,IAAI;AACvB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAkB;AACrC,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,OAAM;AACvB,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,YAAY,IAAI,KAAK;AAC1B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,uBAAuB,IAAI,KAAK,sBAAsB,IAAI,uCAAc;AAC7E,SAAK,cAAc,IAAI,KAAK,eAAe,IAAI,uCAAc;AAC7D,SAAK,YAAY,IAAI,KAAK,cAAc;AACxC,SAAK,MAAM,IAAI,KAAK;AACpB,SAAK,YAAY,IAAI,KAAK;AAC1B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAtHI;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,MAAM;AAAA,MACjB,qCAAW,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,MACjC,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GANnB,OAQT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,uBAAuB;AAAA,MAClC,qCAAW,uBAAuB;AAAA,MAClC,yCAAe;AAAA,MACf,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GAdrB,OAgBT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,OAAO;AAAA,MACd,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAtBf,OAwBT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,wBAAwB,CAAC;AAAA,GA3BhC,OA6BT;AAKA;AAAA,MAHC,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAhCvB,OAkCT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,gCAAM;AAAA,MACN,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GAxCrB,OA0CT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,iBAAiB;AAAA,MAC5B,qCAAW,iBAAiB;AAAA,MAC5B,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAhDf,OAkDT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,iCAAO,SAAS;AAAA,MAChB,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GAvDrB,OAyDT;AAzDG,IAAM,QAAN;;;APDA,IAAM,YAAN,MAAM,kBAAiB,sCAAa;AAAA,EA4CvC,cAAc;AACV,UAAM;AA9BV;AAAA,gBAAe;AA+BX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,WAAU,KAAK;AACzC,WAAK,aAAa,IAAI;AACtB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,gBAAgB,IAAI;AACzB,WAAK,UAAU,IAAI;AACnB,WAAK,OAAO,IAAI;AAChB,WAAK,aAAa,IAAI;AACtB,WAAK,cAAc,IAAI;AACvB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAqB;AACxC,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,UAAS;AAC1B,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,YAAY,IAAI,KAAK;AAC1B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,gBAAgB,IAAI,KAAK;AAC9B,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,MAAM,IAAI,KAAK;AACpB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AA7FI;AAAA,MANC,iCAAK,MAAM,0BAA0B;AAAA,MACrC,qCAAW,0BAA0B;AAAA,MACrC,yCAAe;AAAA,MACf,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GALrB,UAOT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,UAAU;AAAA,MACjB,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAbf,UAeT;AAAA;AASA;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,KAAK;AAAA,MAChB,qCAAW,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,MAChC,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GAtBzB,UAwBT;AAAA;AASA;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,6BAAI;AAAA,MACf,qCAAW,+BAAM,EAAE,MAAM,KAAK,CAAC;AAAA,MAC/B,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GA/BnB,UAiCT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,iBAAiB;AAAA,MAC5B,qCAAW,iBAAiB;AAAA,MAC5B,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAvCf,UAyCT;AAzCG,IAAM,WAAN;;;AqCTN,IAAAC,2BAAwJ;AACzJ,IAAAC,6BAAyD;;;ACDxD,IAAAC,2BAAyH;AAC1H,IAAAC,6BAAyD;;;ACDxD,IAAAC,2BAAmH;AACpH,IAAAC,6BAAyD;AAIlD,IAAM,wCAAN,MAAM,8CAA6C,qBAAqB;AAAA,EA4B3E,cAAc;AACV,UAAM;AAtBV;AAAA,gBAAe;AAuBX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,uCAAsC,KAAK;AACrE,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,eAAe,IAAI;AACxB,WAAK,wBAAwB,IAAI;AAAA,IACrC;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAiD;AACpE,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,sCAAqC;AACtD,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,cAAc,IAAI,KAAK;AAC5B,SAAK,wBAAwB,IAAI,KAAK;AACtC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAtEI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,sCAAsC;AAAA,MAC7C,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,sCAOT;AAAA;AASA;AAAA,MAPC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,oCAAU,CAAC;AAAA,MACX,oCAAU,GAAG;AAAA,MACb,mCAAO,EAAE,MAAM,eAAe,CAAC;AAAA,GAdvB,sCAgBT;AAAA;AASA;AAAA,MAPC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,oCAAU,CAAC;AAAA,MACX,oCAAU,GAAG;AAAA,MACb,mCAAO,EAAE,MAAM,yBAAyB,CAAC;AAAA,GAvBjC,sCAyBT;AAzBG,IAAM,uCAAN;;;ACLN,IAAAC,2BAA6F;AAC9F,IAAAC,6BAAyD;AAIlD,IAAM,0CAAN,MAAM,gDAA+C,qBAAqB;AAAA,EAiB7E,cAAc;AACV,UAAM;AAXV;AAAA,gBAAe;AAYX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,yCAAwC,KAAK;AACvE,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAmD;AACtE,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,wCAAuC;AACxD,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,UAAU,IAAI,KAAK;AACxB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAzDI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,wCAAwC;AAAA,MAC/C,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,wCAOT;AAAA;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GAZnB,wCAcT;AAdG,IAAM,yCAAN;;;AFEA,IAAM,kCAAN,MAAM,wCAAuC,qBAAqB;AAAA,EA0BrE,cAAc;AACV,UAAM;AApBV;AAAA,gBAAe;AAqBX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,iCAAgC,KAAK;AAC/D,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,SAAS,IAAI;AAClB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA2C;AAC9D,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,gCAA+B;AAChD,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,QAAQ,IAAI,KAAK;AACtB,SAAK,UAAU,IAAI,KAAK;AACxB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AApEI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,gCAAgC;AAAA,MACvC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,gCAOT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,oCAAoC;AAAA,MAC/C,qCAAW,oCAAoC;AAAA,MAC/C,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAbjB,gCAeT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,sCAAsC;AAAA,MACjD,qCAAW,sCAAsC;AAAA,MACjD,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GArBnB,gCAuBT;AAvBG,IAAM,iCAAN;;;ADHP,IAAAC,2BAAuB;AACvB,IAAAA,2BAA6B;AAC7B,IAAAA,2BAAuB;AAEhB,IAAM,gBAAN,MAAM,sBAAqB,sCAAa;AAAA,EAoC3C,cAAc;AACV,UAAM;AAXV;AAAA,gBAAe;AAOf;AAAA,sBAAsB;AAKlB,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,EACtB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,eAAc,KAAK;AAC7C,WAAK,WAAW,IAAI;AACpB,WAAK,aAAa,IAAI;AACtB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,aAAa,IAAI,cAAc;AACpC,WAAK,aAAa,IAAI;AACtB,WAAK,cAAc,IAAI;AACvB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAyB;AAC5C,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,cAAa;AAC9B,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,YAAY,IAAI,KAAK;AAC1B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,aAAa,IAAI,KAAK,cAAc;AACzC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAjFI;AAAA,MATC,kCAAQ;AAAA,MACR,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,MAC3B,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,SAAU,QAAO,gCAAO,OAAO,IAAI;AAAA,aAC7C,MAAM,SAAS,SAAU,QAAO,gCAAO,OAAO,IAAI;AAAA,QACtD,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GARO,cAUT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,8BAA8B;AAAA,MACzC,qCAAW,8BAA8B;AAAA,MACzC,yCAAe;AAAA,MACf,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GAhBrB,cAkBT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,cAAc;AAAA,MACrB,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAxBf,cA0BT;AAOA;AAAA,MALC,iCAAK,MAAM,OAAO;AAAA,MAClB,oCAAU;AAAA,MACV,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,cAAc,CAAC;AAAA,GA/BtB,cAiCT;AAjCG,IAAM,eAAN;;;AILA,IAAK,cAAL,kBAAKC,iBAAL;AACH,EAAAA,aAAA,cAAW;AACX,EAAAA,aAAA,2BAAwB;AACxB,EAAAA,aAAA,6BAA0B;AAC1B,EAAAA,aAAA,mCAAgC;AAChC,EAAAA,aAAA,gCAA6B;AAC7B,EAAAA,aAAA,yBAAsB;AACtB,EAAAA,aAAA,sCAAmC;AACnC,EAAAA,aAAA,qCAAkC;AAClC,EAAAA,aAAA,+BAA4B;AATpB,SAAAA;AAAA,GAAA;;;ACAL,IAAK,iBAAL,kBAAKC,oBAAL;AACH,EAAAA,gBAAA,kBAAe;AACf,EAAAA,gBAAA,yBAAsB;AACtB,EAAAA,gBAAA,0BAAuB;AAHf,SAAAA;AAAA,GAAA;;;ACAL,IAAK,iCAAL,kBAAKC,oCAAL;AACH,EAAAA,gCAAA,mCAAgC;AAChC,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,+BAA4B;AAC5B,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AAPN,SAAAA;AAAA,GAAA;;;ACAL,IAAK,WAAL,kBAAKC,cAAL;AACH,EAAAA,UAAA,UAAO;AACP,EAAAA,UAAA,WAAQ;AACR,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,iBAAc;AAJN,SAAAA;AAAA,GAAA;;;ACAL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,wBAAqB;AACrB,EAAAA,kBAAA,sBAAmB;AACnB,EAAAA,kBAAA,qBAAkB;AAClB,EAAAA,kBAAA,mCAAgC;AAChC,EAAAA,kBAAA,4BAAyB;AACzB,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,0BAAuB;AACvB,EAAAA,kBAAA,wBAAqB;AACrB,EAAAA,kBAAA,uBAAoB;AACpB,EAAAA,kBAAA,qCAAkC;AAClC,EAAAA,kBAAA,8BAA2B;AAC3B,EAAAA,kBAAA,mBAAgB;AAChB,EAAAA,kBAAA,oBAAiB;AACjB,EAAAA,kBAAA,kBAAe;AACf,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,+BAA4B;AAC5B,EAAAA,kBAAA,wBAAqB;AACrB,EAAAA,kBAAA,aAAU;AAlBF,SAAAA;AAAA,GAAA;;;ACAL,IAAK,2BAAL,kBAAKC,8BAAL;AACH,EAAAA,0BAAA,6BAA0B;AAC1B,EAAAA,0BAAA,2BAAwB;AACxB,EAAAA,0BAAA,0BAAuB;AACvB,EAAAA,0BAAA,wCAAqC;AACrC,EAAAA,0BAAA,iCAA8B;AAC9B,EAAAA,0BAAA,sBAAmB;AACnB,EAAAA,0BAAA,+BAA4B;AAC5B,EAAAA,0BAAA,6BAA0B;AAC1B,EAAAA,0BAAA,4BAAyB;AACzB,EAAAA,0BAAA,0CAAuC;AACvC,EAAAA,0BAAA,mCAAgC;AAChC,EAAAA,0BAAA,wBAAqB;AACrB,EAAAA,0BAAA,yBAAsB;AACtB,EAAAA,0BAAA,uBAAoB;AACpB,EAAAA,0BAAA,sBAAmB;AACnB,EAAAA,0BAAA,oCAAiC;AACjC,EAAAA,0BAAA,6BAA0B;AAC1B,EAAAA,0BAAA,kBAAe;AAlBP,SAAAA;AAAA,GAAA;;;ACAL,IAAK,YAAL,kBAAKC,eAAL;AACH,EAAAA,WAAA,iBAAc;AACd,EAAAA,WAAA,gBAAa;AACb,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,gBAAa;AACb,EAAAA,WAAA,gBAAa;AACb,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,qBAAkB;AAClB,EAAAA,WAAA,qBAAkB;AAClB,EAAAA,WAAA,gBAAa;AACb,EAAAA,WAAA,gBAAa;AACb,EAAAA,WAAA,UAAO;AAdC,SAAAA;AAAA,GAAA;;;ACAL,IAAK,uBAAL,kBAAKC,0BAAL;AACH,EAAAA,sBAAA,aAAU;AACV,EAAAA,sBAAA,sBAAmB;AAFX,SAAAA;AAAA,GAAA;;;ACAL,IAAK,UAAL,kBAAKC,aAAL;AACH,EAAAA,SAAA,SAAM;AACN,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,WAAQ;AAJA,SAAAA;AAAA,GAAA;;;ACAL,IAAK,6BAAL,kBAAKC,gCAAL;AACH,EAAAA,4BAAA,gBAAa;AADL,SAAAA;AAAA,GAAA;;;ACHX,IAAAC,2BAA6K;AAC9K,IAAAC,6BAAyD;AAIzD,IAAAC,2BAA6B;;;ACL5B,IAAAC,2BAAyH;AAC1H,IAAAC,6BAAyD;;;ACDxD,IAAAC,2BAA6F;AAC9F,IAAAC,6BAAyD;AAIlD,IAAM,6BAAN,MAAM,mCAAkC,qBAAqB;AAAA,EAUhE,cAAc;AACV,UAAM;AAJV;AAAA,gBAAe;AAKX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,4BAA2B,KAAK;AAC1D,WAAK,OAAO,IAAI,QAAQ;AAAA,IAC5B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAsC;AACzD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,2BAA0B;AAC3C,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAhDI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,2BAA2B;AAAA,MAClC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,2BAOT;AAPG,IAAM,4BAAN;;;ACLN,IAAAC,2BAA6F;AAC9F,IAAAC,6BAAyD;AAIlD,IAAM,uBAAN,MAAM,6BAA4B,qBAAqB;AAAA,EAU1D,cAAc;AACV,UAAM;AAJV;AAAA,gBAAe;AAKX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,sBAAqB,KAAK;AACpD,WAAK,OAAO,IAAI,QAAQ;AAAA,IAC5B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAgC;AACnD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,qBAAoB;AACrC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAhDI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,qBAAqB;AAAA,MAC5B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,qBAOT;AAPG,IAAM,sBAAN;;;ACLN,IAAAC,2BAAkI;AACnI,IAAAC,6BAAyD;AAGzD,IAAAC,2BAAwC;AACxC,IAAAA,2BAAgD;AAChD,IAAAA,2BAA0B;AAC1B,IAAAA,2BAAgC;AAChC,IAAAA,2BAAwC;AACxC,IAAAA,2BAA6B;AAC7B,IAAAA,2BAA+B;AAC/B,IAAAA,2BAAqC;AACrC,IAAAA,2BAAyC;AACzC,IAAAA,2BAAkC;AAClC,IAAAA,2BAA0C;AAC1C,IAAAA,2BAAwC;AACxC,IAAAA,2BAA8C;AAC9C,IAAAA,2BAA+C;AAC/C,IAAAA,2BAA4C;AAC5C,IAAAA,2BAA0C;AAC1C,IAAAA,2BAAkD;AAClD,IAAAA,2BAAkC;AAClC,IAAAA,2BAAoB;AACpB,IAAAA,2BAAoC;AACpC,IAAAA,2BAAiC;AACjC,IAAAA,2BAA8B;AAC9B,IAAAA,2BAAsC;AACtC,IAAAA,2BAAuC;AACvC,IAAAA,2BAAmC;AACnC,IAAAA,2BAA2C;AAC3C,IAAAA,2BAA4B;AAC5B,IAAAA,2BAAoC;AACpC,IAAAA,2BAAoB;AACpB,IAAAA,2BAAqB;AACrB,IAAAA,2BAAqB;AACrB,IAAAA,2BAAwB;AACxB,IAAAA,2BAAwC;AACxC,IAAAA,2BAA4B;AAC5B,IAAAA,2BAAsC;AACtC,IAAAA,2BAA8C;AAC9C,IAAAA,2BAAgC;AAChC,IAAAA,2BAAwC;AACxC,IAAAA,2BAAkC;AAClC,IAAAA,2BAAkC;AAClC,IAAAA,2BAA0B;AAC1B,IAAAA,2BAAoB;AACpB,IAAAA,2BAAoB;AACpB,IAAAA,2BAAoC;AACpC,IAAAA,2BAAyB;AACzB,IAAAA,2BAAmC;AACnC,IAAAA,2BAA2C;AAC3C,IAAAA,2BAAqB;AACrB,IAAAA,2BAAqC;AAE9B,IAAM,yBAAN,MAAM,+BAA8B,qBAAqB;AAAA,EAqjB5D,cAAc;AACV,UAAM;AA/iBV;AAAA,gBAAe;AAQf;AAAA,iCAA+C,+CAAsB,OAAO;AAAA,MAC9E,QAAQ;AAAA,MACR,aAAa;AAAA,QACX;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,0BAA0B;AAAA,UAC1B,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,0BAA0B;AAAA,UAC1B,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,UACvB,4BAA4B;AAAA,UAC5B,yBAAyB;AAAA,QAC3B;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,0BAA0B;AAAA,UAC1B,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,0BAA0B;AAAA,UAC1B,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,UACvB,4BAA4B;AAAA,UAC5B,yBAAyB;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,iBAAiB;AAAA,QACf;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,eAAe;AAAA,UACf,qBAAqB;AAAA,UACrB,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,eAAe;AAAA,UACf,qBAAqB;AAAA,UACrB,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,UACvB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,yBAAyB;AAAA,QACzB,uBAAuB;AAAA,QACvB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,yBAAyB;AAAA,QACzB,uBAAuB;AAAA,QACvB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,oBAAoB;AAAA,QAClB,yBAAyB;AAAA,QACzB,uBAAuB;AAAA,QACvB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,gBAAgB;AAAA,QACd,yBAAyB;AAAA,QACzB,yBAAyB;AAAA,QACzB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,QACR,uBAAuB;AAAA,MACzB;AAAA,MACA,YAAY;AAAA,QACV,yBAAyB;AAAA,QACzB,+BAA+B;AAAA,QAC/B,yBAAyB;AAAA,QACzB,+BAA+B;AAAA,QAC/B,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,6BAA6B;AAAA,IAC/B,CAAC;AA2HO,SAAK,OAAO;AACZ,SAAK,wBAAwB,+CAAsB,OAAO;AAAA,MAChE,QAAQ;AAAA,MACR,aAAa;AAAA,QACX;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,0BAA0B;AAAA,UAC1B,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,0BAA0B;AAAA,UAC1B,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,UACvB,4BAA4B;AAAA,UAC5B,yBAAyB;AAAA,QAC3B;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,0BAA0B;AAAA,UAC1B,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,0BAA0B;AAAA,UAC1B,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,UACvB,4BAA4B;AAAA,UAC5B,yBAAyB;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,iBAAiB;AAAA,QACf;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,eAAe;AAAA,UACf,qBAAqB;AAAA,UACrB,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,eAAe;AAAA,UACf,qBAAqB;AAAA,UACrB,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,UACvB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,yBAAyB;AAAA,QACzB,uBAAuB;AAAA,QACvB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,yBAAyB;AAAA,QACzB,uBAAuB;AAAA,QACvB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,oBAAoB;AAAA,QAClB,yBAAyB;AAAA,QACzB,uBAAuB;AAAA,QACvB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,gBAAgB;AAAA,QACd,yBAAyB;AAAA,QACzB,yBAAyB;AAAA,QACzB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,QACR,uBAAuB;AAAA,MACzB;AAAA,MACA,YAAY;AAAA,QACV,yBAAyB;AAAA,QACzB,+BAA+B;AAAA,QAC/B,yBAAyB;AAAA,QACzB,+BAA+B;AAAA,QAC/B,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,6BAA6B;AAAA,IAC/B,CAAC;AAAA,EACG;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,wBAAuB,KAAK;AACtD,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,wBAAwB,IAAI,yBAAyB,+CAAsB,OAAO;AAAA,QACjG,QAAQ;AAAA,QACR,aAAa;AAAA,UACX;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,mBAAmB;AAAA,YACnB,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,mBAAmB;AAAA,YACnB,cAAc;AAAA,YACd,0BAA0B;AAAA,YAC1B,mBAAmB;AAAA,YACnB,qBAAqB;AAAA,YACrB,0BAA0B;AAAA,YAC1B,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,YACvB,4BAA4B;AAAA,YAC5B,yBAAyB;AAAA,UAC3B;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA,YACrB,iBAAiB;AAAA,YACjB,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,mBAAmB;AAAA,YACnB,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,mBAAmB;AAAA,YACnB,cAAc;AAAA,YACd,0BAA0B;AAAA,YAC1B,mBAAmB;AAAA,YACnB,qBAAqB;AAAA,YACrB,0BAA0B;AAAA,YAC1B,uBAAuB;AAAA,YACvB,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,YACvB,4BAA4B;AAAA,YAC5B,yBAAyB;AAAA,UAC3B;AAAA,QACF;AAAA,QACA,iBAAiB;AAAA,UACf;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,SAAS;AAAA,YACT,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,eAAe;AAAA,YACf,qBAAqB;AAAA,YACrB,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,eAAe;AAAA,YACf,qBAAqB;AAAA,YACrB,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,uBAAuB;AAAA,UACzB;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,uBAAuB;AAAA,YACvB,uBAAuB;AAAA,YACvB,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,SAAS;AAAA,YACT,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,UACA;AAAA,YACE,gBAAgB;AAAA,YAChB,cAAc;AAAA,YACd,aAAa;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,YACR,aAAa;AAAA,UACf;AAAA,QACF;AAAA,QACA,YAAY;AAAA,UACV,yBAAyB;AAAA,UACzB,uBAAuB;AAAA,UACvB,yBAAyB;AAAA,UACzB,QAAQ;AAAA,QACV;AAAA,QACA,aAAa;AAAA,UACX,yBAAyB;AAAA,UACzB,uBAAuB;AAAA,UACvB,yBAAyB;AAAA,UACzB,QAAQ;AAAA,QACV;AAAA,QACA,oBAAoB;AAAA,UAClB,yBAAyB;AAAA,UACzB,uBAAuB;AAAA,UACvB,yBAAyB;AAAA,UACzB,QAAQ;AAAA,QACV;AAAA,QACA,gBAAgB;AAAA,UACd,yBAAyB;AAAA,UACzB,yBAAyB;AAAA,UACzB,yBAAyB;AAAA,UACzB,QAAQ;AAAA,UACR,uBAAuB;AAAA,QACzB;AAAA,QACA,YAAY;AAAA,UACV,yBAAyB;AAAA,UACzB,+BAA+B;AAAA,UAC/B,yBAAyB;AAAA,UACzB,+BAA+B;AAAA,UAC/B,yBAAyB;AAAA,UACzB,QAAQ;AAAA,QACV;AAAA,QACA,sBAAsB;AAAA,QACtB,wBAAwB;AAAA,QACxB,6BAA6B;AAAA,MAC/B,CAAC;AACW,WAAK,mBAAmB,IAAI;AAC5B,WAAK,gBAAgB,IAAI;AACzB,WAAK,YAAY,IAAI;AACrB,WAAK,QAAQ,IAAI;AACjB,WAAK,OAAO,IAAI;AAChB,WAAK,eAAe,IAAI;AACxB,WAAK,YAAY,IAAI;AACrB,WAAK,qBAAqB,IAAI;AAAA,IAClC;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAkC;AACrD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,uBAAsB;AACvC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,yBAAyB,IAAI,KAAK,yBAAyB,+CAAsB,OAAO;AAAA,MACnG,QAAQ;AAAA,MACR,aAAa;AAAA,QACX;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,0BAA0B;AAAA,UAC1B,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,0BAA0B;AAAA,UAC1B,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,UACvB,4BAA4B;AAAA,UAC5B,yBAAyB;AAAA,QAC3B;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,UACb,qBAAqB;AAAA,UACrB,iBAAiB;AAAA,UACjB,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,0BAA0B;AAAA,UAC1B,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,0BAA0B;AAAA,UAC1B,uBAAuB;AAAA,UACvB,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,UACvB,4BAA4B;AAAA,UAC5B,yBAAyB;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,iBAAiB;AAAA,QACf;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,eAAe;AAAA,UACf,qBAAqB;AAAA,UACrB,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,eAAe;AAAA,UACf,qBAAqB;AAAA,UACrB,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,uBAAuB;AAAA,QACzB;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,UACvB,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,QACA;AAAA,UACE,gBAAgB;AAAA,UAChB,cAAc;AAAA,UACd,aAAa;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,yBAAyB;AAAA,QACzB,uBAAuB;AAAA,QACvB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,yBAAyB;AAAA,QACzB,uBAAuB;AAAA,QACvB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,oBAAoB;AAAA,QAClB,yBAAyB;AAAA,QACzB,uBAAuB;AAAA,QACvB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,gBAAgB;AAAA,QACd,yBAAyB;AAAA,QACzB,yBAAyB;AAAA,QACzB,yBAAyB;AAAA,QACzB,QAAQ;AAAA,QACR,uBAAuB;AAAA,MACzB;AAAA,MACA,YAAY;AAAA,QACV,yBAAyB;AAAA,QACzB,+BAA+B;AAAA,QAC/B,yBAAyB;AAAA,QACzB,+BAA+B;AAAA,QAC/B,yBAAyB;AAAA,QACzB,QAAQ;AAAA,MACV;AAAA,MACA,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,6BAA6B;AAAA,IAC/B,CAAC;AACO,SAAK,mBAAmB,IAAI,KAAK;AACjC,SAAK,eAAe,IAAI,KAAK;AAC7B,SAAK,WAAW,IAAI,KAAK;AACzB,SAAK,OAAO,IAAI,KAAK;AACrB,SAAK,MAAM,IAAI,KAAK;AACpB,SAAK,eAAe,IAAI,KAAK;AAC7B,SAAK,WAAW,IAAI,KAAK;AACzB,SAAK,sBAAsB,IAAI,KAAK;AACpC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAr3DI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,uBAAuB;AAAA,MAC9B,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,uBAOT;AAQA;AAAA,MANC,iCAAK,MAAM,8CAAqB;AAAA,MAChC,qCAAW,8CAAqB;AAAA,MAChC,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,0BAA0B,CAAC;AAAA,GAblC,uBAeT;AAAA;AAwbA;AAAA,MATC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,oBAAoB,CAAC;AAAA,MACpC,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,0BAA2B,QAAO,iDAAwB,OAAO,IAAI;AAAA,aAC/E,MAAM,SAAS,kBAAmB,QAAO,yCAAgB,OAAO,IAAI;AAAA,QACxE,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GArcO,uBAucT;AAAA;AAgBA;AAAA,MAdC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,gBAAgB,CAAC;AAAA,MAChC,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,6BAA8B,QAAO,oDAA2B,OAAO,IAAI;AAAA,aACrF,MAAM,SAAS,6BAA8B,QAAO,oDAA2B,OAAO,IAAI;AAAA,aAC1F,MAAM,SAAS,oBAAqB,QAAO,2CAAkB,OAAO,IAAI;AAAA,aACxE,MAAM,SAAS,kCAAmC,QAAO,yDAAgC,OAAO,IAAI;AAAA,aACpG,MAAM,SAAS,qBAAsB,QAAO,4CAAmB,OAAO,IAAI;AAAA,aAC1E,MAAM,SAAS,qBAAsB,QAAO,4CAAmB,OAAO,IAAI;AAAA,aAC1E,MAAM,SAAS,0BAA2B,QAAO,iDAAwB,OAAO,IAAI;AAAA,QACxF,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GArdO,uBAudT;AAAA;AAoBA;AAAA,MAlBC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,MAC5B,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,iBAAkB,QAAO,wCAAe,OAAO,IAAI;AAAA,aAC7D,MAAM,SAAS,uBAAwB,QAAO,8CAAqB,OAAO,IAAI;AAAA,aAC9E,MAAM,SAAS,2BAA4B,QAAO,kDAAyB,OAAO,IAAI;AAAA,aACtF,MAAM,SAAS,0BAA2B,QAAO,iDAAwB,OAAO,IAAI;AAAA,aACpF,MAAM,SAAS,gCAAiC,QAAO,uDAA8B,OAAO,IAAI;AAAA,aAChG,MAAM,SAAS,iCAAkC,QAAO,wDAA+B,OAAO,IAAI;AAAA,aAClG,MAAM,SAAS,oBAAqB,QAAO,2CAAkB,OAAO,IAAI;AAAA,aACxE,MAAM,SAAS,oCAAqC,QAAO,2DAAkC,OAAO,IAAI;AAAA,aACxG,MAAM,SAAS,8BAA+B,QAAO,qDAA4B,OAAO,IAAI;AAAA,aAC5F,MAAM,SAAS,4BAA6B,QAAO,mDAA0B,OAAO,IAAI;AAAA,aACxF,MAAM,SAAS,4BAA6B,QAAO,mDAA0B,OAAO,IAAI;AAAA,QAC5F,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GAzeO,uBA2eT;AAAA;AA6BA;AAAA,MA3BC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,MACxB,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,yBAA0B,QAAO,gDAAuB,OAAO,IAAI;AAAA,aAC7E,MAAM,SAAS,MAAO,QAAO,6BAAI,OAAO,IAAI;AAAA,aAC5C,MAAM,SAAS,OAAQ,QAAO,8BAAK,OAAO,IAAI;AAAA,aAC9C,MAAM,SAAS,MAAO,QAAO,6BAAI,OAAO,IAAI;AAAA,aAC5C,MAAM,SAAS,OAAQ,QAAO,8BAAK,OAAO,IAAI;AAAA,aAC9C,MAAM,SAAS,mBAAoB,QAAO,0CAAiB,OAAO,IAAI;AAAA,aACtE,MAAM,SAAS,sBAAuB,QAAO,6CAAoB,OAAO,IAAI;AAAA,aAC5E,MAAM,SAAS,uBAAwB,QAAO,8CAAqB,OAAO,IAAI;AAAA,aAC9E,MAAM,SAAS,sBAAuB,QAAO,6CAAoB,OAAO,IAAI;AAAA,aAC5E,MAAM,SAAS,0BAA2B,QAAO,iDAAwB,OAAO,IAAI;AAAA,aACpF,MAAM,SAAS,MAAO,QAAO,6BAAI,OAAO,IAAI;AAAA,aAC5C,MAAM,SAAS,OAAQ,QAAO,8BAAK,OAAO,IAAI;AAAA,aAC9C,MAAM,SAAS,MAAO,QAAO,6BAAI,OAAO,IAAI;AAAA,aAC5C,MAAM,SAAS,YAAa,QAAO,mCAAU,OAAO,IAAI;AAAA,aACxD,MAAM,SAAS,oBAAqB,QAAO,2CAAkB,OAAO,IAAI;AAAA,aACxE,MAAM,SAAS,cAAe,QAAO,qCAAY,OAAO,IAAI;AAAA,aAC5D,MAAM,SAAS,WAAY,QAAO,kCAAS,OAAO,IAAI;AAAA,aACtD,MAAM,SAAS,gBAAiB,QAAO,uCAAc,OAAO,IAAI;AAAA,aAChE,MAAM,SAAS,UAAW,QAAO,iCAAQ,OAAO,IAAI;AAAA,aACpD,MAAM,SAAS,eAAgB,QAAO,sCAAa,OAAO,IAAI;AAAA,QAClE,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GAtgBO,uBAwgBT;AAAA;AASA;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,kCAAS;AAAA,MACpB,qCAAW,oCAAW,EAAE,MAAM,KAAK,CAAC;AAAA,MACpC,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GA/gBf,uBAihBT;AAAA;AAWA;AAAA,MATC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,gBAAgB,CAAC;AAAA,MAChC,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,sBAAuB,QAAO,6CAAoB,OAAO,IAAI;AAAA,aACvE,MAAM,SAAS,cAAe,QAAO,qCAAY,OAAO,IAAI;AAAA,QAChE,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GA1hBO,uBA4hBT;AAAA;AAaA;AAAA,MAXC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,MAC5B,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,0BAA2B,QAAO,iDAAwB,OAAO,IAAI;AAAA,aAC/E,MAAM,SAAS,gCAAiC,QAAO,uDAA8B,OAAO,IAAI;AAAA,aAChG,MAAM,SAAS,kBAAmB,QAAO,yCAAgB,OAAO,IAAI;AAAA,aACpE,MAAM,SAAS,wBAAyB,QAAO,+CAAsB,OAAO,IAAI;AAAA,QACpF,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GAviBO,uBAyiBT;AAAA;AASA;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,0CAAiB;AAAA,MAC5B,qCAAW,4CAAmB,EAAE,MAAM,KAAK,CAAC;AAAA,MAC5C,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,uBAAuB,CAAC;AAAA,GAhjB/B,uBAkjBT;AAljBG,IAAM,wBAAN;;;ACtDN,IAAAC,2BAAkI;AACnI,IAAAC,6BAAyD;AAGzD,IAAAC,2BAAqB;AACrB,IAAAA,2BAAsB;AACtB,IAAAA,2BAAkC;AAClC,IAAAA,2BAAqB;AACrB,IAAAA,2BAAsB;AACtB,IAAAA,2BAAsB;AACtB,IAAAA,2BAAuB;AACvB,IAAAA,2BAA4B;AAC5B,IAAAA,2BAAoC;AACpC,IAAAA,2BAAwB;AACxB,IAAAA,2BAAsB;AACtB,IAAAA,2BAAqB;AAEd,IAAM,2BAAN,MAAM,iCAAgC,qBAAqB;AAAA,EAgN9D,cAAc;AACV,UAAM;AA1MV;AAAA,gBAAe;AAQf;AAAA,6BAAuC,2CAAkB,OAAO;AAAA,MAClE,QAAQ;AAAA,MACR,aAAa;AAAA,QACX;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,oBAAoB;AAAA,UACpB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,UACpB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,oBAAoB;AAAA,UACpB,oBAAoB;AAAA,UACpB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,oBAAoB;AAAA,UACpB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,UACpB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,oBAAoB;AAAA,UACpB,oBAAoB;AAAA,UACpB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,oBAAoB;AAAA,UACpB,oBAAoB;AAAA,UACpB,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,oBAAoB;AAAA,QAClB,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,gBAAgB;AAAA,QACd,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,QACR,mBAAmB;AAAA,MACrB;AAAA,MACA,YAAY;AAAA,QACV,2BAA2B;AAAA,QAC3B,qBAAqB;AAAA,QACrB,2BAA2B;AAAA,QAC3B,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,yBAAyB;AAAA,MACzB,oBAAoB;AAAA,IACtB,CAAC;AAkCO,SAAK,OAAO;AACZ,SAAK,oBAAoB,2CAAkB,OAAO;AAAA,MACxD,QAAQ;AAAA,MACR,aAAa;AAAA,QACX;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,oBAAoB;AAAA,UACpB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,UACpB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,oBAAoB;AAAA,UACpB,oBAAoB;AAAA,UACpB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,oBAAoB;AAAA,UACpB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,UACpB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,oBAAoB;AAAA,UACpB,oBAAoB;AAAA,UACpB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,oBAAoB;AAAA,UACpB,oBAAoB;AAAA,UACpB,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,oBAAoB;AAAA,QAClB,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,gBAAgB;AAAA,QACd,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,QACR,mBAAmB;AAAA,MACrB;AAAA,MACA,YAAY;AAAA,QACV,2BAA2B;AAAA,QAC3B,qBAAqB;AAAA,QACrB,2BAA2B;AAAA,QAC3B,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,yBAAyB;AAAA,MACzB,oBAAoB;AAAA,IACtB,CAAC;AAAA,EACG;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,0BAAyB,KAAK;AACxD,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,oBAAoB,IAAI,qBAAqB,2CAAkB,OAAO;AAAA,QACrF,QAAQ;AAAA,QACR,aAAa;AAAA,UACX;AAAA,YACE,iBAAiB;AAAA,YACjB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,eAAe;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,iBAAiB;AAAA,YACjB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,eAAe;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,iBAAiB;AAAA,YACjB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,eAAe;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,iBAAiB;AAAA,YACjB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,eAAe;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,iBAAiB;AAAA,YACjB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,eAAe;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,iBAAiB;AAAA,YACjB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,eAAe;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,iBAAiB;AAAA,YACjB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,eAAe;AAAA,YACf,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,oBAAoB;AAAA,YACpB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,oBAAoB;AAAA,YACpB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,oBAAoB;AAAA,YACpB,oBAAoB;AAAA,YACpB,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,oBAAoB;AAAA,YACpB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,oBAAoB;AAAA,YACpB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,oBAAoB;AAAA,YACpB,oBAAoB;AAAA,YACpB,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,iBAAiB;AAAA,YACjB,gBAAgB,CAAC;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,iBAAiB;AAAA,YACjB,aAAa;AAAA,YACb,eAAe;AAAA,YACf,oBAAoB;AAAA,YACpB,oBAAoB;AAAA,YACpB,QAAQ;AAAA,UACV;AAAA,QACF;AAAA,QACA,YAAY;AAAA,UACV,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,QAAQ;AAAA,QACV;AAAA,QACA,aAAa;AAAA,UACX,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,QAAQ;AAAA,QACV;AAAA,QACA,oBAAoB;AAAA,UAClB,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,QAAQ;AAAA,QACV;AAAA,QACA,gBAAgB;AAAA,UACd,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,QAAQ;AAAA,UACR,mBAAmB;AAAA,QACrB;AAAA,QACA,YAAY;AAAA,UACV,2BAA2B;AAAA,UAC3B,qBAAqB;AAAA,UACrB,2BAA2B;AAAA,UAC3B,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,QAAQ;AAAA,QACV;AAAA,QACA,aAAa;AAAA,UACX,qBAAqB;AAAA,UACrB,qBAAqB;AAAA,UACrB,QAAQ;AAAA,QACV;AAAA,QACA,yBAAyB;AAAA,QACzB,oBAAoB;AAAA,MACtB,CAAC;AACW,WAAK,eAAe,IAAI;AACxB,WAAK,YAAY,IAAI;AAAA,IACzB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAoC;AACvD,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,yBAAwB;AACzC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,qBAAqB,IAAI,KAAK,qBAAqB,2CAAkB,OAAO;AAAA,MACvF,QAAQ;AAAA,MACR,aAAa;AAAA,QACX;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,oBAAoB;AAAA,UACpB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,UACpB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,oBAAoB;AAAA,UACpB,oBAAoB;AAAA,UACpB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,oBAAoB;AAAA,UACpB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,UACpB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,oBAAoB;AAAA,UACpB,oBAAoB;AAAA,UACpB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,UACjB,gBAAgB,CAAC;AAAA,UACjB,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,eAAe;AAAA,UACf,oBAAoB;AAAA,UACpB,oBAAoB;AAAA,UACpB,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,oBAAoB;AAAA,QAClB,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,gBAAgB;AAAA,QACd,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,QACR,mBAAmB;AAAA,MACrB;AAAA,MACA,YAAY;AAAA,QACV,2BAA2B;AAAA,QAC3B,qBAAqB;AAAA,QACrB,2BAA2B;AAAA,QAC3B,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,aAAa;AAAA,QACX,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,MACV;AAAA,MACA,yBAAyB;AAAA,MACzB,oBAAoB;AAAA,IACtB,CAAC;AACO,SAAK,eAAe,IAAI,KAAK;AAC7B,SAAK,WAAW,IAAI,KAAK;AACzB,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAhuBI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,yBAAyB;AAAA,MAChC,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,yBAOT;AAQA;AAAA,MANC,iCAAK,MAAM,0CAAiB;AAAA,MAC5B,qCAAW,0CAAiB;AAAA,MAC5B,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,sBAAsB,CAAC;AAAA,GAb9B,yBAeT;AAAA;AA4KA;AAAA,MATC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,gBAAgB,CAAC;AAAA,MAChC,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,cAAe,QAAO,qCAAY,OAAO,IAAI;AAAA,aACvD,MAAM,SAAS,sBAAuB,QAAO,6CAAoB,OAAO,IAAI;AAAA,QAChF,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GAzLO,yBA2LT;AAAA;AAkBA;AAAA,MAhBC,kCAAQ;AAAA,MACR,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,MAC5B,sCAAU,CAAC,EAAE,MAAM,MAAM,OAAO,IAAI,CAAC,SAAc;AAClD,QAAI,MAAM,SAAS,UAAW,QAAO,iCAAQ,OAAO,IAAI;AAAA,aAC/C,MAAM,SAAS,QAAS,QAAO,+BAAM,OAAO,IAAI;AAAA,aAChD,MAAM,SAAS,OAAQ,QAAO,8BAAK,OAAO,IAAI;AAAA,aAC9C,MAAM,SAAS,OAAQ,QAAO,8BAAK,OAAO,IAAI;AAAA,aAC9C,MAAM,SAAS,QAAS,QAAO,+BAAM,OAAO,IAAI;AAAA,aAChD,MAAM,SAAS,QAAS,QAAO,+BAAM,OAAO,IAAI;AAAA,aAChD,MAAM,SAAS,QAAS,QAAO,+BAAM,OAAO,IAAI;AAAA,aAChD,MAAM,SAAS,OAAQ,QAAO,8BAAK,OAAO,IAAI;AAAA,aAC9C,MAAM,SAAS,SAAU,QAAO,gCAAO,OAAO,IAAI;AAAA,QACtD,QAAO;AAAA,EACd,CAAC,CAAC;AAAA,GA3MO,yBA6MT;AA7MG,IAAM,0BAAN;;;AJRA,IAAM,mBAAN,MAAM,yBAAwB,qBAAqB;AAAA,EA0CtD,cAAc;AACV,UAAM;AApCV;AAAA,gBAAe;AAqCX,SAAK,OAAO;AAAA,EAChB;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,kBAAiB,KAAK;AAChD,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,SAAS,IAAI;AAClB,WAAK,WAAW,IAAI;AACpB,WAAK,OAAO,IAAI;AAChB,WAAK,aAAa,IAAI;AAAA,IAC1B;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAA4B;AAC/C,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,iBAAgB;AACjC,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,QAAQ,IAAI,KAAK;AACtB,SAAK,UAAU,IAAI,KAAK;AACxB,SAAK,MAAM,IAAI,KAAK;AACpB,SAAK,YAAY,IAAI,KAAK;AAC1B,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAxFI;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,iBAAiB;AAAA,MACxB,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GALf,iBAOT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,qBAAqB;AAAA,MAChC,qCAAW,qBAAqB;AAAA,MAChC,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,SAAS,CAAC;AAAA,GAbjB,iBAeT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,uBAAuB;AAAA,MAClC,qCAAW,uBAAuB;AAAA,MAClC,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,WAAW,CAAC;AAAA,GArBnB,iBAuBT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,mBAAmB;AAAA,MAC9B,qCAAW,mBAAmB;AAAA,MAC9B,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GA7Bf,iBA+BT;AAAA;AAQA;AAAA,MANC,iCAAK,MAAM,yBAAyB;AAAA,MACpC,qCAAW,yBAAyB;AAAA,MACpC,yCAAe;AAAA,MACf,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GArCrB,iBAuCT;AAvCG,IAAM,kBAAN;;;AKNA,IAAK,QAAL,kBAAKC,WAAL;AACH,EAAAA,OAAA,YAAS;AACT,EAAAA,OAAA,iBAAc;AACd,EAAAA,OAAA,UAAO;AACP,EAAAA,OAAA,YAAS;AACT,EAAAA,OAAA,iBAAc;AALN,SAAAA;AAAA,GAAA;;;ANML,IAAM,SAAN,MAAM,eAAc,sCAAa;AAAA,EA2EpC,cAAc;AACV,UAAM;AA7DV;AAAA,gBAAe;AAQf;AAAA,mBAAkB;AAyBlB;AAAA;AAQA;AAAA,qBAAoB;AAQpB;AAAA,0BAAyB;AAarB,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK;AACL,SAAK,YAAY;AACjB,SAAK,iBAAiB;AAAA,EAC1B;AAAA,EAGS,KAAK,OAAa;AAEvB,QAAI,OAAO;AACP,YAAM,MAAM,cAAc,QAAO,KAAK;AACtC,WAAK,aAAa,IAAI;AACtB,WAAK,OAAO,IAAI,QAAQ;AACxB,WAAK,UAAU,IAAI,WAAW;AAC9B,WAAK,YAAY,IAAI;AACrB,WAAK,gBAAgB,IAAI;AACzB,WAAK,QAAQ,IAAI;AACjB,WAAK,YAAY,IAAI,aAAa;AAClC,WAAK,iBAAiB,IAAI,kBAAkB;AAC5C,WAAK,kBAAkB,IAAI;AAC3B,WAAK,aAAa,IAAI;AACtB,WAAK,cAAc,IAAI;AACvB,WAAK,WAAW,IAAI;AAAA,IACxB;AAAA,EACJ;AAAA,EAGA,OAAgB,OAAO,MAAkB;AACrC,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAE1C,QAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,YAAM,MAAU,CAAC;AACjB,eAAS,YAAY,MAAM;AACvB,YAAI,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,QAAI,SAAS,IAAI,OAAM;AACvB,WAAO,KAAK,IAAI;AAChB,WAAO;AAAA,EACX;AAAA,EAEM,OAAO,MAAY;AACrB,WAAO,OAAO,SAAS,WAAW,OAAO,CAAC;AAC1C,SAAK,YAAY,IAAI,KAAK;AAC1B,SAAK,MAAM,IAAI,KAAK,QAAQ;AAC5B,SAAK,SAAS,IAAI,KAAK,WAAW;AAClC,SAAK,WAAW,IAAI,KAAK;AACzB,SAAK,gBAAgB,IAAI,KAAK;AAC9B,SAAK,OAAO,IAAI,KAAK;AACrB,SAAK,WAAW,IAAI,KAAK,aAAa;AACtC,SAAK,iBAAiB,IAAI,KAAK,kBAAkB;AACjD,SAAK,kBAAkB,IAAI,KAAK;AAChC,WAAO,MAAM,OAAO,IAAI;AACxB,eAAO,4CAAgB,MAAM,EAAE,mBAAmB,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEH,MAAM,WAA6B;AAC5B,UAAM,SAAS,UAAM,mCAAS,IAAI;AAClC,QAAI,OAAO,SAAS,GAAE;AAC3B,YAAM,gBAAgB,OAAO,IAAI,CAAC,UAA6B,OAAO,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AAC3H,YAAM,IAAI,MAAM,sBAAsB,aAAa,EAAE;AAAA,IAC3D;AACM,WAAO;AAAA,EACX;AACJ;AAAA;AAxII;AAAA,MANC,iCAAK,MAAM,eAAe;AAAA,MAC1B,qCAAW,eAAe;AAAA,MAC1B,yCAAe;AAAA,MACf,oCAAU;AAAA,MACV,mCAAO,EAAE,MAAM,aAAa,CAAC;AAAA,GALrB,OAOT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,iCAAO,OAAO;AAAA,MACd,mCAAO,EAAE,MAAM,OAAO,CAAC;AAAA,GAbf,OAeT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,kCAAQ,8BAA8B;AAAA,MACtC,mCAAO,EAAE,MAAM,UAAU,CAAC;AAAA,GArBlB,OAuBT;AAAA;AASA;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,QAAQ;AAAA,MACnB,qCAAW,UAAU,EAAE,MAAM,KAAK,CAAC;AAAA,MACnC,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GA9BpB,OAgCT;AAAA;AASA;AAAA,MAPC,kCAAQ;AAAA,MACR,iCAAK,MAAM,YAAY;AAAA,MACvB,qCAAW,cAAc,EAAE,MAAM,KAAK,CAAC;AAAA,MACvC,yCAAe,EAAE,MAAM,KAAK,CAAC;AAAA,MAC7B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,iBAAiB,CAAC;AAAA,GAvCzB,OAyCT;AAOA;AAAA,MALC,iCAAK,MAAM,MAAM;AAAA,MACjB,iCAAO,KAAK;AAAA,MACZ,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,GA9ChB,OAgDT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,YAAY,CAAC;AAAA,GAtDpB,OAwDT;AAQA;AAAA,MANC,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS;AAAA,MACT,qCAAW;AAAA,MACX,8BAAI,CAAC;AAAA,MACL,mCAAO,EAAE,MAAM,kBAAkB,CAAC;AAAA,GA9D1B,OAgET;AAAA;AAQA;AAAA,MANC,kCAAQ;AAAA,MACR,iCAAK,MAAM,MAAM;AAAA,MACjB,mCAAS,CAAC,GAAE,EAAE,MAAM,KAAK,CAAC;AAAA,MAC1B,qCAAW;AAAA,MACX,mCAAO,EAAE,MAAM,mBAAmB,CAAC;AAAA,GAtE3B,OAwET;AAxEG,IAAM,QAAN;;;AONA,IAAK,aAAL,kBAAKC,gBAAL;AACH,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,cAAW;AAHH,SAAAA;AAAA,GAAA;;;ACAL,IAAK,yBAAL,kBAAKC,4BAAL;AACH,EAAAA,wBAAA,YAAS;AACT,EAAAA,wBAAA,cAAW;AAFH,SAAAA;AAAA,GAAA;;;ACAL,IAAK,eAAL,kBAAKC,kBAAL;AACH,EAAAA,cAAA,mBAAgB;AAChB,EAAAA,cAAA,sBAAmB;AACnB,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,yBAAsB;AACtB,EAAAA,cAAA,aAAU;AALF,SAAAA;AAAA,GAAA;;;ACAL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,6BAA0B;AAC1B,EAAAA,kBAAA,2BAAwB;AACxB,EAAAA,kBAAA,wBAAqB;AACrB,EAAAA,kBAAA,sBAAmB;AACnB,EAAAA,kBAAA,wBAAqB;AACrB,EAAAA,kBAAA,mBAAgB;AAChB,EAAAA,kBAAA,kBAAe;AACf,EAAAA,kBAAA,gBAAa;AACb,EAAAA,kBAAA,eAAY;AACZ,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,iCAA8B;AAC9B,EAAAA,kBAAA,+BAA4B;AAC5B,EAAAA,kBAAA,0BAAuB;AACvB,EAAAA,kBAAA,4BAAyB;AACzB,EAAAA,kBAAA,uBAAoB;AACpB,EAAAA,kBAAA,sBAAmB;AACnB,EAAAA,kBAAA,oBAAiB;AACjB,EAAAA,kBAAA,mBAAgB;AAChB,EAAAA,kBAAA,eAAY;AACZ,EAAAA,kBAAA,WAAQ;AApBA,SAAAA;AAAA,GAAA;;;ACAL,IAAK,oBAAL,kBAAKC,uBAAL;AACH,EAAAA,mBAAA,4BAAyB;AACzB,EAAAA,mBAAA,0BAAuB;AACvB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,qBAAkB;AAClB,EAAAA,mBAAA,uBAAoB;AACpB,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,UAAO;AACP,EAAAA,mBAAA,UAAO;AAXC,SAAAA;AAAA,GAAA;;;ACAL,IAAK,oBAAL,kBAAKC,uBAAL;AACH,EAAAA,mBAAA,iBAAc;AACd,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,+BAA4B;AALpB,SAAAA;AAAA,GAAA;;;ACAL,IAAK,uBAAL,kBAAKC,0BAAL;AACH,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,0BAAuB;AACvB,EAAAA,sBAAA,yBAAsB;AACtB,EAAAA,sBAAA,8BAA2B;AAC3B,EAAAA,sBAAA,4BAAyB;AACzB,EAAAA,sBAAA,2BAAwB;AACxB,EAAAA,sBAAA,wBAAqB;AACrB,EAAAA,sBAAA,sBAAmB;AACnB,EAAAA,sBAAA,qBAAkB;AATV,SAAAA;AAAA,GAAA;;;ACAL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,qBAAkB;AAClB,EAAAA,kBAAA,uBAAoB;AACpB,EAAAA,kBAAA,uBAAoB;AALZ,SAAAA;AAAA,GAAA;;;ACAL,IAAK,+BAAL,kBAAKC,kCAAL;AACH,EAAAA,8BAAA,iCAA8B;AAC9B,EAAAA,8BAAA,+BAA4B;AAC5B,EAAAA,8BAAA,8BAA2B;AAC3B,EAAAA,8BAAA,mCAAgC;AAChC,EAAAA,8BAAA,iCAA8B;AAC9B,EAAAA,8BAAA,gCAA6B;AAC7B,EAAAA,8BAAA,6BAA0B;AAC1B,EAAAA,8BAAA,2BAAwB;AACxB,EAAAA,8BAAA,0BAAuB;AATf,SAAAA;AAAA,GAAA;;;ACAL,IAAK,2BAAL,kBAAKC,8BAAL;AACH,EAAAA,0BAAA,qCAAkC;AAClC,EAAAA,0BAAA,mCAAgC;AAChC,EAAAA,0BAAA,iCAA8B;AAC9B,EAAAA,0BAAA,gCAA6B;AAC7B,EAAAA,0BAAA,sCAAmC;AACnC,EAAAA,0BAAA,mBAAgB;AAChB,EAAAA,0BAAA,mBAAgB;AAChB,EAAAA,0BAAA,yBAAsB;AACtB,EAAAA,0BAAA,wBAAqB;AATb,SAAAA;AAAA,GAAA;;;ACAL,IAAK,YAAL,kBAAKC,eAAL;AACH,EAAAA,WAAA,eAAY;AACZ,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,iBAAc;AACd,EAAAA,WAAA,kBAAe;AACf,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,gBAAa;AANL,SAAAA;AAAA,GAAA;;;ACAL,IAAK,sBAAL,kBAAKC,yBAAL;AACH,EAAAA,qBAAA,gBAAa;AACb,EAAAA,qBAAA,cAAW;AAFH,SAAAA;AAAA,GAAA;;;ACAL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,mBAAgB;AAChB,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,sBAAmB;AACnB,EAAAA,kBAAA,uBAAoB;AACpB,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,2BAAwB;AACxB,EAAAA,kBAAA,mBAAgB;AAChB,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,kBAAe;AACf,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,UAAO;AAdC,SAAAA;AAAA,GAAA;;;ACAL,IAAK,gBAAL,kBAAKC,mBAAL;AACH,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,cAAW;AAHH,SAAAA;AAAA,GAAA;;;ACAL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,qBAAkB;AAClB,EAAAA,kBAAA,0BAAuB;AACvB,EAAAA,kBAAA,0BAAuB;AACvB,EAAAA,kBAAA,wBAAqB;AACrB,EAAAA,kBAAA,6BAA0B;AAC1B,EAAAA,kBAAA,0BAAuB;AACvB,EAAAA,kBAAA,6BAA0B;AAPlB,SAAAA;AAAA,GAAA;;;ACAL,IAAK,kBAAL,kBAAKC,qBAAL;AACH,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,cAAW;AAFH,SAAAA;AAAA,GAAA;;;ACAL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,wBAAqB;AACrB,EAAAA,kBAAA,sBAAmB;AACnB,EAAAA,kBAAA,qBAAkB;AAClB,EAAAA,kBAAA,qBAAkB;AAClB,EAAAA,kBAAA,yBAAsB;AACtB,EAAAA,kBAAA,0BAAuB;AACvB,EAAAA,kBAAA,wBAAqB;AACrB,EAAAA,kBAAA,uBAAoB;AACpB,EAAAA,kBAAA,uBAAoB;AACpB,EAAAA,kBAAA,2BAAwB;AACxB,EAAAA,kBAAA,oBAAiB;AACjB,EAAAA,kBAAA,kBAAe;AACf,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,iBAAc;AACd,EAAAA,kBAAA,qBAAkB;AAfV,SAAAA;AAAA,GAAA;;;ACAL,IAAK,oBAAL,kBAAKC,uBAAL;AACH,EAAAA,mBAAA,SAAM;AACN,EAAAA,mBAAA,SAAM;AAFE,SAAAA;AAAA,GAAA;;;ACAL,IAAK,kBAAL,kBAAKC,qBAAL;AACH,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,cAAW;AAHH,SAAAA;AAAA,GAAA;;;ACAL,IAAK,WAAL,kBAAKC,cAAL;AACH,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,uBAAoB;AACpB,EAAAA,UAAA,sBAAmB;AARX,SAAAA;AAAA,GAAA;;;ACAL,IAAK,mBAAL,kBAAKC,sBAAL;AACH,EAAAA,kBAAA,SAAM;AADE,SAAAA;AAAA,GAAA;;;ACAL,IAAK,2BAAL,kBAAKC,8BAAL;AACH,EAAAA,0BAAA,cAAW;AADH,SAAAA;AAAA,GAAA;;;ACAL,IAAK,wBAAL,kBAAKC,2BAAL;AACH,EAAAA,uBAAA,gCAA6B;AAC7B,EAAAA,uBAAA,8BAA2B;AAC3B,EAAAA,uBAAA,4BAAyB;AACzB,EAAAA,uBAAA,2BAAwB;AACxB,EAAAA,uBAAA,sBAAmB;AACnB,EAAAA,uBAAA,yBAAsB;AACtB,EAAAA,uBAAA,cAAW;AAPH,SAAAA;AAAA,GAAA;;;ACAL,IAAK,oBAAL,kBAAKC,uBAAL;AACH,EAAAA,mBAAA,6BAA0B;AAC1B,EAAAA,mBAAA,8BAA2B;AAC3B,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,kBAAe;AAJP,SAAAA;AAAA,GAAA;;;ACAL,IAAK,4BAAL,kBAAKC,+BAAL;AACH,EAAAA,2BAAA,kCAA+B;AAC/B,EAAAA,2BAAA,mCAAgC;AAChC,EAAAA,2BAAA,oBAAiB;AACjB,EAAAA,2BAAA,uBAAoB;AAJZ,SAAAA;AAAA,GAAA;","names":["import_class_validator","import_class_transformer","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","AllAirEconomizerType","BaseboardEquipmentType","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_honeybee_schema","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","ExteriorApertureType","import_class_validator","import_class_transformer","ExteriorFaceType","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","StoryType","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","ControlType","EconomizerType","EvaporativeCoolerEquipmentType","FaceType","FCUEquipmentType","FCUwithDOASEquipmentType","FuelTypes","FurnaceEquipmentType","GasType","GasUnitHeaterEquipmentType","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","Units","ModuleType","MoistureDiffusionModel","MountingType","PSZEquipmentType","PTACEquipmentType","PVAVEquipmentType","RadiantEquipmentType","RadiantFaceTypes","RadiantwithDOASEquipmentType","ResidentialEquipmentType","Roughness","ScheduleNumericType","ScheduleUnitType","ShadeLocation","SHWEquipmentType","SlatOrientation","VAVEquipmentType","VentilationMethod","VentilationType","Vintages","VRFEquipmentType","VRFwithDOASEquipmentType","WindowACEquipmentType","WSHPEquipmentType","WSHPwithDOASEquipmentType"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/models/index.ts","../src/models/_GridParameterBase.ts","../src/deepTransform.ts","../src/models/_OpenAPIGenBaseModel.ts","../src/models/_LouversBase.ts","../src/models/_WindowParameterBase.ts","../src/models/AllAirEconomizerType.ts","../src/models/BaseboardEquipmentType.ts","../src/models/Building.ts","../src/models/BuildingPropertiesAbridged.ts","../src/models/BuildingEnergyPropertiesAbridged.ts","../src/models/BuildingRadiancePropertiesAbridged.ts","../src/models/RoofSpecification.ts","../src/models/DetailedClerestory.ts","../src/helpers/class-validator.ts","../src/models/Story.ts","../src/models/Room2D.ts","../src/models/DetailedSkylights.ts","../src/models/DetailedWindows.ts","../src/models/ExtrudedBorder.ts","../src/models/GriddedSkylightArea.ts","../src/models/GriddedSkylightRatio.ts","../src/models/LouversByCount.ts","../src/models/LouversByDistance.ts","../src/models/Overhang.ts","../src/models/RectangularWindows.ts","../src/models/RepeatingWindowRatio.ts","../src/models/Room2DPropertiesAbridged.ts","../src/models/Room2DComparisonProperties.ts","../src/models/SimpleWindowArea.ts","../src/models/SimpleWindowRatio.ts","../src/models/SingleWindow.ts","../src/models/Room2DDoe2Properties.ts","../src/models/Room2DEnergyPropertiesAbridged.ts","../src/models/Room2DRadiancePropertiesAbridged.ts","../src/models/ExteriorApertureGridParameter.ts","../src/models/ExteriorApertureType.ts","../src/models/ExteriorFaceGridParameter.ts","../src/models/ExteriorFaceType.ts","../src/models/RoomGridParameter.ts","../src/models/RoomRadialGridParameter.ts","../src/models/StoryPropertiesAbridged.ts","../src/models/StoryEnergyPropertiesAbridged.ts","../src/models/StoryRadiancePropertiesAbridged.ts","../src/models/StoryType.ts","../src/models/ContextShade.ts","../src/models/ContextShadePropertiesAbridged.ts","../src/models/ContextShadeEnergyPropertiesAbridged.ts","../src/models/ContextShadeRadiancePropertiesAbridged.ts","../src/models/ControlType.ts","../src/models/EconomizerType.ts","../src/models/EvaporativeCoolerEquipmentType.ts","../src/models/FaceType.ts","../src/models/FCUEquipmentType.ts","../src/models/FCUwithDOASEquipmentType.ts","../src/models/FuelTypes.ts","../src/models/FurnaceEquipmentType.ts","../src/models/GasType.ts","../src/models/GasUnitHeaterEquipmentType.ts","../src/models/Model.ts","../src/models/ModelProperties.ts","../src/models/ModelComparisonProperties.ts","../src/models/ModelDoe2Properties.ts","../src/models/ModelEnergyProperties.ts","../src/models/ModelRadianceProperties.ts","../src/models/Units.ts","../src/models/ModuleType.ts","../src/models/MoistureDiffusionModel.ts","../src/models/MountingType.ts","../src/models/PSZEquipmentType.ts","../src/models/PTACEquipmentType.ts","../src/models/PVAVEquipmentType.ts","../src/models/RadiantEquipmentType.ts","../src/models/RadiantFaceTypes.ts","../src/models/RadiantwithDOASEquipmentType.ts","../src/models/ResidentialEquipmentType.ts","../src/models/Roughness.ts","../src/models/ScheduleNumericType.ts","../src/models/ScheduleUnitType.ts","../src/models/ShadeLocation.ts","../src/models/SHWEquipmentType.ts","../src/models/SlatOrientation.ts","../src/models/VAVEquipmentType.ts","../src/models/VentilationMethod.ts","../src/models/VentilationType.ts","../src/models/Vintages.ts","../src/models/VRFEquipmentType.ts","../src/models/VRFwithDOASEquipmentType.ts","../src/models/WindowACEquipmentType.ts","../src/models/WSHPEquipmentType.ts","../src/models/WSHPwithDOASEquipmentType.ts"],"sourcesContent":["export * from \"./models/index\";\nexport * from \"./helpers/class-validator\"","// Auto-generated\nimport 'reflect-metadata'; // Must have for class validator // Ensure this is at the top\nexport * from \"./_GridParameterBase\";\nexport * from \"./_LouversBase\";\nexport * from \"./_OpenAPIGenBaseModel\";\nexport * from \"./_WindowParameterBase\";\nexport * from \"./AllAirEconomizerType\";\nexport * from \"./BaseboardEquipmentType\";\nexport * from \"./Building\";\nexport * from \"./BuildingEnergyPropertiesAbridged\";\nexport * from \"./BuildingPropertiesAbridged\";\nexport * from \"./BuildingRadiancePropertiesAbridged\";\nexport * from \"./ContextShade\";\nexport * from \"./ContextShadeEnergyPropertiesAbridged\";\nexport * from \"./ContextShadePropertiesAbridged\";\nexport * from \"./ContextShadeRadiancePropertiesAbridged\";\nexport * from \"./ControlType\";\nexport * from \"./DetailedClerestory\";\nexport * from \"./DetailedSkylights\";\nexport * from \"./DetailedWindows\";\nexport * from \"./EconomizerType\";\nexport * from \"./EvaporativeCoolerEquipmentType\";\nexport * from \"./ExteriorApertureGridParameter\";\nexport * from \"./ExteriorApertureType\";\nexport * from \"./ExteriorFaceGridParameter\";\nexport * from \"./ExteriorFaceType\";\nexport * from \"./ExtrudedBorder\";\nexport * from \"./FaceType\";\nexport * from \"./FCUEquipmentType\";\nexport * from \"./FCUwithDOASEquipmentType\";\nexport * from \"./FuelTypes\";\nexport * from \"./FurnaceEquipmentType\";\nexport * from \"./GasType\";\nexport * from \"./GasUnitHeaterEquipmentType\";\nexport * from \"./GriddedSkylightArea\";\nexport * from \"./GriddedSkylightRatio\";\nexport * from \"./LouversByCount\";\nexport * from \"./LouversByDistance\";\nexport * from \"./Model\";\nexport * from \"./ModelComparisonProperties\";\nexport * from \"./ModelDoe2Properties\";\nexport * from \"./ModelEnergyProperties\";\nexport * from \"./ModelProperties\";\nexport * from \"./ModelRadianceProperties\";\nexport * from \"./ModuleType\";\nexport * from \"./MoistureDiffusionModel\";\nexport * from \"./MountingType\";\nexport * from \"./Overhang\";\nexport * from \"./PSZEquipmentType\";\nexport * from \"./PTACEquipmentType\";\nexport * from \"./PVAVEquipmentType\";\nexport * from \"./RadiantEquipmentType\";\nexport * from \"./RadiantFaceTypes\";\nexport * from \"./RadiantwithDOASEquipmentType\";\nexport * from \"./RectangularWindows\";\nexport * from \"./RepeatingWindowRatio\";\nexport * from \"./ResidentialEquipmentType\";\nexport * from \"./RoofSpecification\";\nexport * from \"./Room2D\";\nexport * from \"./Room2DComparisonProperties\";\nexport * from \"./Room2DDoe2Properties\";\nexport * from \"./Room2DEnergyPropertiesAbridged\";\nexport * from \"./Room2DPropertiesAbridged\";\nexport * from \"./Room2DRadiancePropertiesAbridged\";\nexport * from \"./RoomGridParameter\";\nexport * from \"./RoomRadialGridParameter\";\nexport * from \"./Roughness\";\nexport * from \"./ScheduleNumericType\";\nexport * from \"./ScheduleUnitType\";\nexport * from \"./ShadeLocation\";\nexport * from \"./SHWEquipmentType\";\nexport * from \"./SimpleWindowArea\";\nexport * from \"./SimpleWindowRatio\";\nexport * from \"./SingleWindow\";\nexport * from \"./SlatOrientation\";\nexport * from \"./Story\";\nexport * from \"./StoryEnergyPropertiesAbridged\";\nexport * from \"./StoryPropertiesAbridged\";\nexport * from \"./StoryRadiancePropertiesAbridged\";\nexport * from \"./StoryType\";\nexport * from \"./Units\";\nexport * from \"./VAVEquipmentType\";\nexport * from \"./VentilationMethod\";\nexport * from \"./VentilationType\";\nexport * from \"./Vintages\";\nexport * from \"./VRFEquipmentType\";\nexport * from \"./VRFwithDOASEquipmentType\";\nexport * from \"./WindowACEquipmentType\";\nexport * from \"./WSHPEquipmentType\";\nexport * from \"./WSHPwithDOASEquipmentType\";\n","import { IsNumber, IsDefined, IsBoolean, IsOptional, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base object for all GridParameters. */\nexport class _GridParameterBase extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"dimension\" })\n /** The dimension of the grid cells as a number. */\n dimension!: number;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"include_mesh\" })\n /** A boolean to note whether the resulting SensorGrid should include the mesh. */\n includeMesh: boolean = true;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Matches(/^_GridParameterBase$/)\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"_GridParameterBase\";\n\t\n\n constructor() {\n super();\n this.includeMesh = true;\n this.type = \"_GridParameterBase\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(_GridParameterBase, _data);\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n this.type = obj.type ?? \"_GridParameterBase\";\n }\n }\n\n\n static override fromJS(data: any): _GridParameterBase {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new _GridParameterBase();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dimension\"] = this.dimension;\n data[\"include_mesh\"] = this.includeMesh ?? true;\n data[\"type\"] = this.type ?? \"_GridParameterBase\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { plainToInstance } from \"class-transformer\";\n\nexport function deepTransform<T extends object>(cls: new () => T, plain: any): T {\n // Use a try-catch block for abstract classes\n let instance: T;\n try {\n instance = plainToInstance(cls, plain, { enableImplicitConversion: true, exposeUnsetFields: false, exposeDefaultValues: true });\n } catch (e) {\n // If cls is abstract, create a plain object with the same properties\n instance = plain as T;\n }\n\n for (const key of Object.keys(instance)) {\n const value = (instance as any)[key];\n\n // If the value is a plain object and the class has a type hint\n const metadataType = Reflect.getMetadata('design:type', instance, key);\n\n if (\n value &&\n typeof value === 'object' &&\n metadataType &&\n typeof metadataType === 'function' &&\n metadataType !== Object &&\n !(value instanceof metadataType)\n ) {\n (instance as any)[key] = deepTransform(metadataType, value);\n }\n }\n\n return instance;\n}","import { IsString, IsOptional, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\n\nexport abstract class _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"type\" })\n /** A base class to use when there is no baseclass available to fall on. */\n type: string = \"InvalidType\";\n\t\n\n constructor() {\n this.type = \"InvalidType\";\n }\n\n\n init(_data?: any) {\n\n }\n\n\n static fromJS(data: any): _OpenAPIGenBaseModel {\n data = typeof data === 'object' ? data : {};\n\n throw new Error(\"The abstract class '_OpenAPIGenBaseModel' cannot be instantiated.\");\n }\n\n\ttoJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"InvalidType\";\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsOptional, Min, Max, IsArray, IsBoolean, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for for a series of louvered shades over a wall. */\nexport class _LouversBase extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"depth\" })\n /** A number for the depth to extrude the louvers. */\n depth!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"offset\" })\n /** A number for the distance to louvers from the wall. */\n offset: number = 0;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(-90)\n @Max(90)\n @Expose({ name: \"angle\" })\n /** A number between -90 and 90 for the for an angle to rotate the louvers in degrees. 0 indicates louvers perpendicular to the wall. Positive values indicate a downward rotation. Negative values indicate an upward rotation. */\n angle: number = 0;\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsOptional()\n @Expose({ name: \"contour_vector\" })\n /** A list of two float values representing the (x, y) of a 2D vector for the direction along which contours are generated. (0, 1) will generate horizontal contours, (1, 0) will generate vertical contours, and (1, 1) will generate diagonal contours. */\n contourVector: number[] = [0, 1];\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"flip_start_side\" })\n /** Boolean to note whether the side the louvers start from should be flipped. Default is False to have contours on top or right. Setting to True will start contours on the bottom or left. */\n flipStartSide: boolean = false;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Matches(/^_LouversBase$/)\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"_LouversBase\";\n\t\n\n constructor() {\n super();\n this.offset = 0;\n this.angle = 0;\n this.contourVector = [0, 1];\n this.flipStartSide = false;\n this.type = \"_LouversBase\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(_LouversBase, _data);\n this.depth = obj.depth;\n this.offset = obj.offset ?? 0;\n this.angle = obj.angle ?? 0;\n this.contourVector = obj.contourVector ?? [0, 1];\n this.flipStartSide = obj.flipStartSide ?? false;\n this.type = obj.type ?? \"_LouversBase\";\n }\n }\n\n\n static override fromJS(data: any): _LouversBase {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new _LouversBase();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"depth\"] = this.depth;\n data[\"offset\"] = this.offset ?? 0;\n data[\"angle\"] = this.angle ?? 0;\n data[\"contour_vector\"] = this.contourVector ?? [0, 1];\n data[\"flip_start_side\"] = this.flipStartSide ?? false;\n data[\"type\"] = this.type ?? \"_LouversBase\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsOptional, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for all window parameters. */\nexport class _WindowParameterBase extends _OpenAPIGenBaseModel {\n @IsOptional()\n @Expose({ name: \"user_data\" })\n /** Optional dictionary of user data associated with the object.All keys and values of this dictionary should be of a standard data type to ensure correct serialization of the object (eg. str, float, int, list). When a list is used, each item in the list will be assigned to the generated Honeybee apertures. */\n userData?: Object;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Matches(/^_WindowParameterBase$/)\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"_WindowParameterBase\";\n\t\n\n constructor() {\n super();\n this.type = \"_WindowParameterBase\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(_WindowParameterBase, _data);\n this.userData = obj.userData;\n this.type = obj.type ?? \"_WindowParameterBase\";\n }\n }\n\n\n static override fromJS(data: any): _WindowParameterBase {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new _WindowParameterBase();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"user_data\"] = this.userData;\n data[\"type\"] = this.type ?? \"_WindowParameterBase\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum AllAirEconomizerType {\n NoEconomizer = \"NoEconomizer\",\n DifferentialDryBulb = \"DifferentialDryBulb\",\n DifferentialEnthalpy = \"DifferentialEnthalpy\",\n DifferentialDryBulbAndEnthalpy = \"DifferentialDryBulbAndEnthalpy\",\n FixedDryBulb = \"FixedDryBulb\",\n FixedEnthalpy = \"FixedEnthalpy\",\n ElectronicEnthalpy = \"ElectronicEnthalpy\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum BaseboardEquipmentType {\n ElectricBaseboard = \"ElectricBaseboard\",\n BoilerBaseboard = \"BoilerBaseboard\",\n ASHPBaseboard = \"ASHPBaseboard\",\n DHWBaseboard = \"DHWBaseboard\",\n}","import { IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Equals, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { BuildingPropertiesAbridged } from \"./BuildingPropertiesAbridged\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { RoofSpecification } from \"./RoofSpecification\";\nimport { Room } from \"honeybee-schema\";\nimport { Story } from \"./Story\";\n\nexport class Building extends IDdBaseModel {\n @Type(() => BuildingPropertiesAbridged)\n @IsInstance(BuildingPropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: BuildingPropertiesAbridged;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Building\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Building\";\n\t\n @IsArray()\n @Type(() => Story)\n @IsInstance(Story, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"unique_stories\" })\n /** An array of unique dragonfly Story objects that together form the entire building. Stories should generally be ordered from lowest floor to highest floor, though this is not required. Note that, if a given Story is repeated several times over the height of the building and this is represented by the multiplier, the unique story included in this list should be the first (lowest) story of the repeated floors. */\n uniqueStories?: Story[];\n\t\n @IsArray()\n @Type(() => Room)\n @IsInstance(Room, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"room_3ds\" })\n /** An optional array of 3D Honeybee Room objects for additional Rooms that are a part of the Building but are not represented within the unique_stories. This is useful when there are parts of the Building geometry that cannot easily be represented with the extruded floor plate and sloped roof assumptions that underlie Dragonfly Room2Ds and RoofSpecification. Cases where this input is most useful include sloped walls and certain types of domed roofs that become tedious to implement with RoofSpecification. Matching the Honeybee Room.story property to the Dragonfly Story.display_name of an object within the unique_stories will effectively place the Honeybee Room on that Story for the purposes of floor_area, exterior_wall_area, etc. However, note that the Honeybee Room.multiplier property takes precedence over whatever multiplier is assigned to the Dragonfly Story that the Room.story may reference. (Default: None). */\n room3ds?: Room[];\n\t\n @Type(() => RoofSpecification)\n @IsInstance(RoofSpecification)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"roof\" })\n /** An optional RoofSpecification object that provides an alternative way to describe roof geometry over rooms (instead of specifying roofs on each story). If trying to decide between the two, specifying geometry on each story is closer to how dragonfly natively works with roof geometry as it relates to rooms. However, when it is unknown which roof geometries correspond to which stories, this Building-level attribute may be used and each roof geometry will automatically be added to the best Story in the Building upon serialization to Python. This automatic assignment will happen by checking for overlaps between the Story Room2Ds and the Roof geometry in plan. When a given roof geometry overlaps with several Stories, the top-most Story will get the roof geometry assigned to it unless this top Story has a floor_height above the roof geometry, in which case the next highest story will be checked until a compatible one is found. */\n roof?: RoofSpecification;\n\t\n\n constructor() {\n super();\n this.type = \"Building\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Building, _data);\n this.properties = obj.properties;\n this.type = obj.type ?? \"Building\";\n this.uniqueStories = obj.uniqueStories;\n this.room3ds = obj.room3ds;\n this.roof = obj.roof;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): Building {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Building();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"Building\";\n data[\"unique_stories\"] = this.uniqueStories;\n data[\"room_3ds\"] = this.room3ds;\n data[\"roof\"] = this.roof;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { BuildingEnergyPropertiesAbridged } from \"./BuildingEnergyPropertiesAbridged\";\nimport { BuildingRadiancePropertiesAbridged } from \"./BuildingRadiancePropertiesAbridged\";\n\nexport class BuildingPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"BuildingPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"BuildingPropertiesAbridged\";\n\t\n @Type(() => BuildingEnergyPropertiesAbridged)\n @IsInstance(BuildingEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: BuildingEnergyPropertiesAbridged;\n\t\n @Type(() => BuildingRadiancePropertiesAbridged)\n @IsInstance(BuildingRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: BuildingRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"BuildingPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(BuildingPropertiesAbridged, _data);\n this.type = obj.type ?? \"BuildingPropertiesAbridged\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): BuildingPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new BuildingPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"BuildingPropertiesAbridged\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, MinLength, MaxLength, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class BuildingEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"BuildingEnergyPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"BuildingEnergyPropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"construction_set\" })\n /** Name of a ConstructionSet to specify all constructions for the Building. If None, the Model global_construction_set will be used. */\n constructionSet?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"ceiling_plenum_construction\" })\n /** Identifier of an OpaqueConstruction for the bottoms of ceiling plenums. Materials should be ordered from the plenum side to the room side. By default, this is a simple acoustic tile construction. */\n ceilingPlenumConstruction?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"floor_plenum_construction\" })\n /** Identifier of an OpaqueConstruction for the tops of floor plenums. Materials should be ordered from the plenum side to the room side. By default, this is a simple wood plank construction. */\n floorPlenumConstruction?: string;\n\t\n\n constructor() {\n super();\n this.type = \"BuildingEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(BuildingEnergyPropertiesAbridged, _data);\n this.type = obj.type ?? \"BuildingEnergyPropertiesAbridged\";\n this.constructionSet = obj.constructionSet;\n this.ceilingPlenumConstruction = obj.ceilingPlenumConstruction;\n this.floorPlenumConstruction = obj.floorPlenumConstruction;\n }\n }\n\n\n static override fromJS(data: any): BuildingEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new BuildingEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"BuildingEnergyPropertiesAbridged\";\n data[\"construction_set\"] = this.constructionSet;\n data[\"ceiling_plenum_construction\"] = this.ceilingPlenumConstruction;\n data[\"floor_plenum_construction\"] = this.floorPlenumConstruction;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class BuildingRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"BuildingRadiancePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"BuildingRadiancePropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"modifier_set\" })\n /** Name of a ModifierSet to specify all modifiers for the Building. If None, the Model global_modifier_set will be used. */\n modifierSet?: string;\n\t\n\n constructor() {\n super();\n this.type = \"BuildingRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(BuildingRadiancePropertiesAbridged, _data);\n this.type = obj.type ?? \"BuildingRadiancePropertiesAbridged\";\n this.modifierSet = obj.modifierSet;\n }\n }\n\n\n static override fromJS(data: any): BuildingRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new BuildingRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"BuildingRadiancePropertiesAbridged\";\n data[\"modifier_set\"] = this.modifierSet;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { DetailedClerestory } from \"./DetailedClerestory\";\nimport { Face3D } from \"honeybee-schema\";\nimport { Mesh3D } from \"honeybee-schema\";\n\n/** Geometry for specifying sloped roofs over a Story. */\nexport class RoofSpecification extends _OpenAPIGenBaseModel {\n @IsArray()\n @IsDefined()\n @Expose({ name: \"geometry\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'Face3D') return Face3D.fromJS(item);\n else if (item?.type === 'Mesh3D') return Mesh3D.fromJS(item);\n else return item;\n }))\n /** An array of Face3D (or Mesh3D) objects representing the geometry of the Roof. Cases where Room2Ds are only partially covered by these roof geometries will result in those portions of the Room2Ds being extruded to their floor_to_ceiling_height. */\n geometry!: (Face3D | Mesh3D)[];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RoofSpecification\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RoofSpecification\";\n\t\n @IsArray()\n @Type(() => DetailedClerestory)\n @IsInstance(DetailedClerestory, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"clerestory_parameters\" })\n /** A list of ClerestoryParameter objects that dictate how to generate window geometries for any vertical walls that result from the translation of roof geometry. If None, no clerestory windows will exist over the roof. */\n clerestoryParameters?: DetailedClerestory[];\n\t\n\n constructor() {\n super();\n this.type = \"RoofSpecification\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RoofSpecification, _data);\n this.geometry = obj.geometry;\n this.type = obj.type ?? \"RoofSpecification\";\n this.clerestoryParameters = obj.clerestoryParameters;\n }\n }\n\n\n static override fromJS(data: any): RoofSpecification {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RoofSpecification();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"geometry\"] = this.geometry;\n data[\"type\"] = this.type ?? \"RoofSpecification\";\n data[\"clerestory_parameters\"] = this.clerestoryParameters;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsNumber, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Instructions for detailed clerestory windows, defined by 2D Polygons. */\nexport class DetailedClerestory extends _OpenAPIGenBaseModel {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"base_line\" })\n /** An array of two sub-arrays with each sub-array representing the start and end point of a 2D line segment in the world XY system. This establishes the plane and domain in which the clerestory geometries exist. */\n baseLine!: number[][];\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"elevation\" })\n /** A number for the Z-coordinate that places the base_line and the corresponding clerestory window polygons in 3D space. This elevation value should be below all of the 3D clerestory window geometries and helps set the origin of the plane in which the clerestory geometry exists. */\n elevation!: number;\n\t\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"polygons\" })\n /** An array of arrays with each sub-array representing a polygonal boundary of a clerestory window or door. Each sub-array should consist of arrays representing points, which contain 2 values for 2D coordinates in the plane defined by the base_line. The base_line plane is assumed to have an origin at the end point of the line segment (the second point) and an X-axis extending along the length of the segment. The Y-axis of the plane always points upwards. Therefore, both X and Y coordinates of the points in each polygon should be positive. */\n polygons!: number[][][];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"DetailedClerestory\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"DetailedClerestory\";\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"are_doors\" })\n /** An array of booleans that align with the polygons and note whether each of the polygons represents a door out onto a roof or balcony (True) or a clerestory window (False). If None, it will be assumed that all polygons represent windows and they will be translated to Apertures in any resulting Honeybee model */\n areDoors?: boolean[];\n\t\n\n constructor() {\n super();\n this.type = \"DetailedClerestory\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(DetailedClerestory, _data);\n this.baseLine = obj.baseLine;\n this.elevation = obj.elevation;\n this.polygons = obj.polygons;\n this.type = obj.type ?? \"DetailedClerestory\";\n this.areDoors = obj.areDoors;\n }\n }\n\n\n static override fromJS(data: any): DetailedClerestory {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new DetailedClerestory();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"base_line\"] = this.baseLine;\n data[\"elevation\"] = this.elevation;\n data[\"polygons\"] = this.polygons;\n data[\"type\"] = this.type ?? \"DetailedClerestory\";\n data[\"are_doors\"] = this.areDoors;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { registerDecorator, ValidationOptions, ValidationArguments } from 'class-validator';\n\n\n// Custom decorator to validate nested arrays of numbers\nexport function IsNestedNumberArray(validationOptions?: ValidationOptions) {\n return function (object: Object, propertyName: string) {\n registerDecorator({\n name: 'isNestedNumberArray',\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n validator: {\n validate(value: any, args: ValidationArguments) {\n if (value === undefined || value === null) return true; // Allow optional values\n if (!Array.isArray(value)) return false;\n return value.every(\n (arr: any) => Array.isArray(arr) && arr.every(\n (subArr: any) => \n (Array.isArray(subArr) && subArr.every(\n (num: any) => typeof num === 'number'\n )) || \n typeof subArr === 'number'\n )\n );\n },\n defaultMessage(args: ValidationArguments) {\n return `${args.property} must be number[][] or number[][][]`;\n }\n }\n });\n };\n}\n \n \n// Custom decorator to validate nested arrays of numbers\nexport function IsNestedIntegerArray(validationOptions?: ValidationOptions) {\n return function (object: Object, propertyName: string) {\n registerDecorator({\n name: 'isNestedIntegerArray',\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n validator: {\n validate(value: any, args: ValidationArguments) {\n if (value === undefined || value === null) return true; // Allow optional values\n if (!Array.isArray(value)) return false;\n return value.every(\n (arr: any) => Array.isArray(arr) && arr.every(\n (subArr: any) => \n (Array.isArray(subArr) && subArr.every(\n (num: any) => Number.isInteger(num)\n )) || \n Number.isInteger(subArr)\n )\n );\n },\n defaultMessage(args: ValidationArguments) {\n return `${args.property} must be number[][] or number[][][]`;\n }\n }\n });\n };\n}\n\n\n// Custom decorator to validate nested arrays of numbers\nexport function IsNestedStringArray(validationOptions?: ValidationOptions) {\n return function (object: Object, propertyName: string) {\n registerDecorator({\n name: 'isNestedStringArray',\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n validator: {\n validate(value: any, args: ValidationArguments) {\n if (value === undefined || value === null) return true; // Allow optional values\n if (!Array.isArray(value)) return false;\n return value.every(\n (arr: any) => Array.isArray(arr) && arr.every(\n (subArr: any) => \n (Array.isArray(subArr) && subArr.every(\n (num: any) => typeof num === 'string'\n )) || \n typeof subArr === 'string'\n )\n );\n },\n defaultMessage(args: ValidationArguments) {\n return `${args.property} must be string[][] or string[][][]`;\n }\n }\n });\n };\n}","import { IsArray, IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Equals, IsInt, Min, IsEnum, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { Autocalculate } from \"honeybee-schema\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { RoofSpecification } from \"./RoofSpecification\";\nimport { Room2D } from \"./Room2D\";\nimport { StoryPropertiesAbridged } from \"./StoryPropertiesAbridged\";\nimport { StoryType } from \"./StoryType\";\n\nexport class Story extends IDdBaseModel {\n @IsArray()\n @Type(() => Room2D)\n @IsInstance(Room2D, { each: true })\n @ValidateNested({ each: true })\n @IsDefined()\n @Expose({ name: \"room_2ds\" })\n /** An array of dragonfly Room2D objects that together form an entire story of a building. */\n room2ds!: Room2D[];\n\t\n @Type(() => StoryPropertiesAbridged)\n @IsInstance(StoryPropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: StoryPropertiesAbridged;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Story\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Story\";\n\t\n @IsOptional()\n @Expose({ name: \"floor_to_floor_height\" })\n /** A number for the distance from the floor plate of this story to the floor of the story above this one (if it exists). If Autocalculate, this value will be the maximum floor_to_ceiling_height of the input room_2ds. */\n floorToFloorHeight: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"floor_height\" })\n /** A number to indicate the height of the floor plane in the Z axis.If Autocalculate, this will be the minimum floor height of all the room_2ds, which is suitable for cases where there are no floor plenums. */\n floorHeight: (Autocalculate | number) = new Autocalculate();\n\t\n @Type(() => Number)\n @IsInt()\n @IsOptional()\n @Min(1)\n @Expose({ name: \"multiplier\" })\n /** An integer that denotes the number of times that this Story is repeated over the height of the building. */\n multiplier: number = 1;\n\t\n @Type(() => RoofSpecification)\n @IsInstance(RoofSpecification)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"roof\" })\n /** An optional RoofSpecification object containing geometry for generating sloped roofs over the Story. The RoofSpecification will only affect the child Room2Ds that have a True is_top_exposed property and it will only be utilized in translation to Honeybee when the Story multiplier is 1. If None, all Room2D ceilings will be flat. */\n roof?: RoofSpecification;\n\t\n @Type(() => String)\n @IsEnum(StoryType)\n @IsOptional()\n @Expose({ name: \"story_type\" })\n /** Text to indicate the type of story. Stories that are plenums are translated to Honeybee with excluded floor areas. */\n storyType: StoryType = StoryType.Standard;\n\t\n\n constructor() {\n super();\n this.type = \"Story\";\n this.floorToFloorHeight = new Autocalculate();\n this.floorHeight = new Autocalculate();\n this.multiplier = 1;\n this.storyType = StoryType.Standard;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Story, _data);\n this.room2ds = obj.room2ds;\n this.properties = obj.properties;\n this.type = obj.type ?? \"Story\";\n this.floorToFloorHeight = obj.floorToFloorHeight ?? new Autocalculate();\n this.floorHeight = obj.floorHeight ?? new Autocalculate();\n this.multiplier = obj.multiplier ?? 1;\n this.roof = obj.roof;\n this.storyType = obj.storyType ?? StoryType.Standard;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): Story {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Story();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"room_2ds\"] = this.room2ds;\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"Story\";\n data[\"floor_to_floor_height\"] = this.floorToFloorHeight ?? new Autocalculate();\n data[\"floor_height\"] = this.floorHeight ?? new Autocalculate();\n data[\"multiplier\"] = this.multiplier ?? 1;\n data[\"roof\"] = this.roof;\n data[\"story_type\"] = this.storyType ?? StoryType.Standard;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsNumber, IsInstance, ValidateNested, IsString, IsOptional, Equals, IsBoolean, Min, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { Adiabatic } from \"honeybee-schema\";\nimport { DetailedSkylights } from \"./DetailedSkylights\";\nimport { DetailedWindows } from \"./DetailedWindows\";\nimport { ExtrudedBorder } from \"./ExtrudedBorder\";\nimport { GriddedSkylightArea } from \"./GriddedSkylightArea\";\nimport { GriddedSkylightRatio } from \"./GriddedSkylightRatio\";\nimport { Ground } from \"honeybee-schema\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { LouversByCount } from \"./LouversByCount\";\nimport { LouversByDistance } from \"./LouversByDistance\";\nimport { OtherSideTemperature } from \"honeybee-schema\";\nimport { Outdoors } from \"honeybee-schema\";\nimport { Overhang } from \"./Overhang\";\nimport { RectangularWindows } from \"./RectangularWindows\";\nimport { RepeatingWindowRatio } from \"./RepeatingWindowRatio\";\nimport { Room2DPropertiesAbridged } from \"./Room2DPropertiesAbridged\";\nimport { SimpleWindowArea } from \"./SimpleWindowArea\";\nimport { SimpleWindowRatio } from \"./SimpleWindowRatio\";\nimport { SingleWindow } from \"./SingleWindow\";\nimport { Surface } from \"honeybee-schema\";\n\nexport class Room2D extends IDdBaseModel {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"floor_boundary\" })\n /** A list of 2D points representing the outer boundary vertices of the Room2D. The list should include at least 3 points and each point should be a list of 2 (x, y) values. */\n floorBoundary!: number[][];\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"floor_height\" })\n /** A number to indicate the Z-coordinate (or elevation) of the room floor plane. */\n floorHeight!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"floor_to_ceiling_height\" })\n /** A number for the distance between the floor and the ceiling. */\n floorToCeilingHeight!: number;\n\t\n @Type(() => Room2DPropertiesAbridged)\n @IsInstance(Room2DPropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: Room2DPropertiesAbridged;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2D\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2D\";\n\t\n @IsArray()\n @IsNestedNumberArray()\n @IsOptional()\n @Expose({ name: \"floor_holes\" })\n /** Optional list of lists with one list for each hole in the floor plate. Each hole should be a list of at least 2 points and each point a list of 2 (x, y) values. If None, it will be assumed that there are no holes in the floor plate. */\n floorHoles?: number[][][];\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"is_ground_contact\" })\n /** A boolean noting whether this Room2D has its floor in contact with the ground. */\n isGroundContact: boolean = false;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"is_top_exposed\" })\n /** A boolean noting whether this Room2D has its ceiling exposed to the outdoors. */\n isTopExposed: boolean = false;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"has_floor\" })\n /** A boolean for whether the room has a Floor (True) or an AirBoundary (False). If False, this property will only be meaningful if the model is translated to Honeybee with ceiling adjacency solved and there is a Room2D below this one with a has_ceiling property set to False. */\n hasFloor: boolean = true;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"has_ceiling\" })\n /** A boolean for whether the room has a RoofCeiling (True) or an AirBoundary (False). If False, this property will only be meaningful if the model is translated to Honeybee with ceiling adjacency solved and there is a Room2D above this one with a has_floor property set to False. */\n hasCeiling: boolean = true;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"ceiling_plenum_depth\" })\n /** A number for the depth that a ceiling plenum extends into the room. Setting this to a positive value will result in a separate plenum room being split off of the Room2D volume during translation from Dragonfly to Honeybee. The bottom of this ceiling plenum will always be at this Room2D ceiling height minus the value specified here. Setting this to zero indicates that the room has no ceiling plenum. */\n ceilingPlenumDepth: number = 0;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"floor_plenum_depth\" })\n /** A number for the depth that a floor plenum extends into the room. Setting this to a positive value will result in a separate plenum room being split off of the Room2D volume during translation from Dragonfly to Honeybee. The top of this floor plenum will always be at this Room2D floor height plus the value specified here. Setting this to zero indicates that the room has no floor plenum. */\n floorPlenumDepth: number = 0;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"zone\" })\n /** Text string for for the zone identifier to which this Room2D belongs. Room2Ds sharing the same zone identifier are considered part of the same zone in a Building. If the zone identifier has not been specified, it will be the same as the Room2D identifier in the destination engine. Note that this property has no character restrictions. */\n zone?: string;\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"boundary_conditions\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'Ground') return Ground.fromJS(item);\n else if (item?.type === 'Outdoors') return Outdoors.fromJS(item);\n else if (item?.type === 'Surface') return Surface.fromJS(item);\n else if (item?.type === 'Adiabatic') return Adiabatic.fromJS(item);\n else if (item?.type === 'OtherSideTemperature') return OtherSideTemperature.fromJS(item);\n else return item;\n }))\n /** A list of boundary conditions that match the number of segments in the input floor_geometry + floor_holes. These will be used to assign boundary conditions to each of the walls of the Room in the resulting model. Their order should align with the order of segments in the floor_boundary and then with each hole segment. If None, all boundary conditions will be Outdoors or Ground depending on whether ceiling height of the room is at or below 0 (the assumed ground plane). */\n boundaryConditions?: (Ground | Outdoors | Surface | Adiabatic | OtherSideTemperature)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"window_parameters\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'SingleWindow') return SingleWindow.fromJS(item);\n else if (item?.type === 'SimpleWindowArea') return SimpleWindowArea.fromJS(item);\n else if (item?.type === 'SimpleWindowRatio') return SimpleWindowRatio.fromJS(item);\n else if (item?.type === 'RepeatingWindowRatio') return RepeatingWindowRatio.fromJS(item);\n else if (item?.type === 'RectangularWindows') return RectangularWindows.fromJS(item);\n else if (item?.type === 'DetailedWindows') return DetailedWindows.fromJS(item);\n else return item;\n }))\n /** A list of WindowParameter objects that dictate how the window geometries will be generated for each of the walls. If None, no windows will exist over the entire Room2D. */\n windowParameters?: (SingleWindow | SimpleWindowArea | SimpleWindowRatio | RepeatingWindowRatio | RectangularWindows | DetailedWindows)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"shading_parameters\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ExtrudedBorder') return ExtrudedBorder.fromJS(item);\n else if (item?.type === 'Overhang') return Overhang.fromJS(item);\n else if (item?.type === 'LouversByDistance') return LouversByDistance.fromJS(item);\n else if (item?.type === 'LouversByCount') return LouversByCount.fromJS(item);\n else return item;\n }))\n /** A list of ShadingParameter objects that dictate how the shade geometries will be generated for each of the walls. If None, no shades will exist over the entire Room2D. */\n shadingParameters?: (ExtrudedBorder | Overhang | LouversByDistance | LouversByCount)[];\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"air_boundaries\" })\n /** A list of booleans for whether each wall has an air boundary type. False values indicate a standard opaque type while True values indicate an AirBoundary type. All walls will be False by default. Note that any walls with a True air boundary must have a Surface boundary condition without any windows. */\n airBoundaries?: boolean[];\n\t\n @IsOptional()\n @Expose({ name: \"skylight_parameters\" })\n @Transform(({ value }) => {\n const item = value;\n if (item?.type === 'GriddedSkylightArea') return GriddedSkylightArea.fromJS(item);\n else if (item?.type === 'GriddedSkylightRatio') return GriddedSkylightRatio.fromJS(item);\n else if (item?.type === 'DetailedSkylights') return DetailedSkylights.fromJS(item);\n else return item;\n })\n /** A SkylightParameter object describing how to generate skylights. If None, no skylights will exist on the Room2D. */\n skylightParameters?: (GriddedSkylightArea | GriddedSkylightRatio | DetailedSkylights);\n\t\n\n constructor() {\n super();\n this.type = \"Room2D\";\n this.isGroundContact = false;\n this.isTopExposed = false;\n this.hasFloor = true;\n this.hasCeiling = true;\n this.ceilingPlenumDepth = 0;\n this.floorPlenumDepth = 0;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2D, _data);\n this.floorBoundary = obj.floorBoundary;\n this.floorHeight = obj.floorHeight;\n this.floorToCeilingHeight = obj.floorToCeilingHeight;\n this.properties = obj.properties;\n this.type = obj.type ?? \"Room2D\";\n this.floorHoles = obj.floorHoles;\n this.isGroundContact = obj.isGroundContact ?? false;\n this.isTopExposed = obj.isTopExposed ?? false;\n this.hasFloor = obj.hasFloor ?? true;\n this.hasCeiling = obj.hasCeiling ?? true;\n this.ceilingPlenumDepth = obj.ceilingPlenumDepth ?? 0;\n this.floorPlenumDepth = obj.floorPlenumDepth ?? 0;\n this.zone = obj.zone;\n this.boundaryConditions = obj.boundaryConditions;\n this.windowParameters = obj.windowParameters;\n this.shadingParameters = obj.shadingParameters;\n this.airBoundaries = obj.airBoundaries;\n this.skylightParameters = obj.skylightParameters;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): Room2D {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2D();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"floor_boundary\"] = this.floorBoundary;\n data[\"floor_height\"] = this.floorHeight;\n data[\"floor_to_ceiling_height\"] = this.floorToCeilingHeight;\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"Room2D\";\n data[\"floor_holes\"] = this.floorHoles;\n data[\"is_ground_contact\"] = this.isGroundContact ?? false;\n data[\"is_top_exposed\"] = this.isTopExposed ?? false;\n data[\"has_floor\"] = this.hasFloor ?? true;\n data[\"has_ceiling\"] = this.hasCeiling ?? true;\n data[\"ceiling_plenum_depth\"] = this.ceilingPlenumDepth ?? 0;\n data[\"floor_plenum_depth\"] = this.floorPlenumDepth ?? 0;\n data[\"zone\"] = this.zone;\n data[\"boundary_conditions\"] = this.boundaryConditions;\n data[\"window_parameters\"] = this.windowParameters;\n data[\"shading_parameters\"] = this.shadingParameters;\n data[\"air_boundaries\"] = this.airBoundaries;\n data[\"skylight_parameters\"] = this.skylightParameters;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Several detailed skylights defined by 2D Polygons (lists of 2D vertices). */\nexport class DetailedSkylights extends _OpenAPIGenBaseModel {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"polygons\" })\n /** An array of arrays with each sub-array representing a polygonal boundary of a skylight. Each sub-array should consist of arrays representing points, which contain 2 values for 2D coordinates in the world XY system. These coordinate values should lie within the parent Room2D Polygon. */\n polygons!: number[][][];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"DetailedSkylights\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"DetailedSkylights\";\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"are_doors\" })\n /** An array of booleans that align with the polygons and note whether each of the polygons represents an overhead door (True) or a skylight (False). If None, it will be assumed that all polygons represent skylights and they will be translated to Apertures in any resulting Honeybee model. */\n areDoors?: boolean[];\n\t\n\n constructor() {\n super();\n this.type = \"DetailedSkylights\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(DetailedSkylights, _data);\n this.polygons = obj.polygons;\n this.type = obj.type ?? \"DetailedSkylights\";\n this.areDoors = obj.areDoors;\n }\n }\n\n\n static override fromJS(data: any): DetailedSkylights {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new DetailedSkylights();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"polygons\"] = this.polygons;\n data[\"type\"] = this.type ?? \"DetailedSkylights\";\n data[\"are_doors\"] = this.areDoors;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** Several detailed windows defined by 2D Polygons (lists of 2D vertices). */\nexport class DetailedWindows extends _WindowParameterBase {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"polygons\" })\n /** An array of arrays with each sub-array representing a polygonal boundary of a window. Each sub-array should consist of arrays representing points, which can either contain 2 values (indicating they are 2D vertices within the plane of a parent wall segment) or they can contain 3 values (indicating they are 3D world coordinates). For 2D points, the wall plane is assumed to have an origin at the first point of the wall segment and an X-axis extending along the length of the segment. The wall plane Y-axis always points upwards. Therefore, both X and Y values of each point in the polygon should always be positive. Some sample code to convert from 2D vertices to 2D vertices in the plane of the wall can be found here: https://www.ladybug.tools/dragonfly-core/docs/dragonfly.windowparameter.html#dragonfly.windowparameter.DetailedWindows */\n polygons!: number[][][];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"DetailedWindows\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"DetailedWindows\";\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"are_doors\" })\n /** An array of booleans that align with the polygons and note whether each of the polygons represents a door (True) or a window (False). If None, it will be assumed that all polygons represent windows and they will be translated to Apertures in any resulting Honeybee model. */\n areDoors?: boolean[];\n\t\n\n constructor() {\n super();\n this.type = \"DetailedWindows\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(DetailedWindows, _data);\n this.polygons = obj.polygons;\n this.type = obj.type ?? \"DetailedWindows\";\n this.areDoors = obj.areDoors;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): DetailedWindows {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new DetailedWindows();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"polygons\"] = this.polygons;\n data[\"type\"] = this.type ?? \"DetailedWindows\";\n data[\"are_doors\"] = this.areDoors;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Extruded borders over all windows in the wall. */\nexport class ExtrudedBorder extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"depth\" })\n /** A number for the depth of the border. */\n depth!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ExtrudedBorder\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ExtrudedBorder\";\n\t\n\n constructor() {\n super();\n this.type = \"ExtrudedBorder\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ExtrudedBorder, _data);\n this.depth = obj.depth;\n this.type = obj.type ?? \"ExtrudedBorder\";\n }\n }\n\n\n static override fromJS(data: any): ExtrudedBorder {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ExtrudedBorder();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"depth\"] = this.depth;\n data[\"type\"] = this.type ?? \"ExtrudedBorder\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Autocalculate } from \"honeybee-schema\";\n\n/** Gridded skylights defined by an absolute area. */\nexport class GriddedSkylightArea extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"skylight_area\" })\n /** A number for the skylight area in current model units. If this area is larger than the area of the roof that it is applied to, the skylight will fill the parent roof at a 99 percent ratio. */\n skylightArea!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"GriddedSkylightArea\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"GriddedSkylightArea\";\n\t\n @IsOptional()\n @Expose({ name: \"spacing\" })\n /** A number for the spacing between the centers of each grid cell. This should be less than a third of the dimension of the Roof geometry if multiple, evenly-spaced skylights are desired. If Autocalculate, a spacing of one third the smaller dimension of the parent Roof will be automatically assumed. */\n spacing: (Autocalculate | number) = new Autocalculate();\n\t\n\n constructor() {\n super();\n this.type = \"GriddedSkylightArea\";\n this.spacing = new Autocalculate();\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(GriddedSkylightArea, _data);\n this.skylightArea = obj.skylightArea;\n this.type = obj.type ?? \"GriddedSkylightArea\";\n this.spacing = obj.spacing ?? new Autocalculate();\n }\n }\n\n\n static override fromJS(data: any): GriddedSkylightArea {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new GriddedSkylightArea();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"skylight_area\"] = this.skylightArea;\n data[\"type\"] = this.type ?? \"GriddedSkylightArea\";\n data[\"spacing\"] = this.spacing ?? new Autocalculate();\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Autocalculate } from \"honeybee-schema\";\n\n/** Gridded skylights derived from an area ratio with the roof. */\nexport class GriddedSkylightRatio extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"skylight_ratio\" })\n /** A number between 0 and 1 for the ratio between the skylight area and the total Roof face area. */\n skylightRatio!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"GriddedSkylightRatio\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"GriddedSkylightRatio\";\n\t\n @IsOptional()\n @Expose({ name: \"spacing\" })\n /** A number for the spacing between the centers of each grid cell. This should be less than a third of the dimension of the Roof geometry if multiple, evenly-spaced skylights are desired. If Autocalculate, a spacing of one third the smaller dimension of the parent Roof will be automatically assumed. */\n spacing: (Autocalculate | number) = new Autocalculate();\n\t\n\n constructor() {\n super();\n this.type = \"GriddedSkylightRatio\";\n this.spacing = new Autocalculate();\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(GriddedSkylightRatio, _data);\n this.skylightRatio = obj.skylightRatio;\n this.type = obj.type ?? \"GriddedSkylightRatio\";\n this.spacing = obj.spacing ?? new Autocalculate();\n }\n }\n\n\n static override fromJS(data: any): GriddedSkylightRatio {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new GriddedSkylightRatio();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"skylight_ratio\"] = this.skylightRatio;\n data[\"type\"] = this.type ?? \"GriddedSkylightRatio\";\n data[\"spacing\"] = this.spacing ?? new Autocalculate();\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsInt, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _LouversBase } from \"./_LouversBase\";\n\n/** A specific number of louvered Shades over a wall. */\nexport class LouversByCount extends _LouversBase {\n @Type(() => Number)\n @IsInt()\n @IsDefined()\n @Expose({ name: \"louver_count\" })\n /** A positive integer for the number of louvers to generate. */\n louverCount!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"LouversByCount\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"LouversByCount\";\n\t\n\n constructor() {\n super();\n this.type = \"LouversByCount\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(LouversByCount, _data);\n this.louverCount = obj.louverCount;\n this.type = obj.type ?? \"LouversByCount\";\n this.depth = obj.depth;\n this.offset = obj.offset ?? 0;\n this.angle = obj.angle ?? 0;\n this.contourVector = obj.contourVector ?? [0, 1];\n this.flipStartSide = obj.flipStartSide ?? false;\n }\n }\n\n\n static override fromJS(data: any): LouversByCount {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new LouversByCount();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"louver_count\"] = this.louverCount;\n data[\"type\"] = this.type ?? \"LouversByCount\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _LouversBase } from \"./_LouversBase\";\n\n/** A series of louvered Shades at a given distance between each louver. */\nexport class LouversByDistance extends _LouversBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"distance\" })\n /** A number for the approximate distance between each louver. */\n distance!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"LouversByDistance\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"LouversByDistance\";\n\t\n\n constructor() {\n super();\n this.type = \"LouversByDistance\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(LouversByDistance, _data);\n this.distance = obj.distance;\n this.type = obj.type ?? \"LouversByDistance\";\n this.depth = obj.depth;\n this.offset = obj.offset ?? 0;\n this.angle = obj.angle ?? 0;\n this.contourVector = obj.contourVector ?? [0, 1];\n this.flipStartSide = obj.flipStartSide ?? false;\n }\n }\n\n\n static override fromJS(data: any): LouversByDistance {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new LouversByDistance();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"distance\"] = this.distance;\n data[\"type\"] = this.type ?? \"LouversByDistance\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, Min, Max, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** A single overhang over an entire wall. */\nexport class Overhang extends _OpenAPIGenBaseModel {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"depth\" })\n /** A number for the overhang depth. */\n depth!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Overhang\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Overhang\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(-90)\n @Max(90)\n @Expose({ name: \"angle\" })\n /** A number between -90 and 90 for the for an angle to rotate the overhang in degrees. 0 indicates an overhang perpendicular to the wall. Positive values indicate a downward rotation. Negative values indicate an upward rotation. */\n angle: number = 0;\n\t\n\n constructor() {\n super();\n this.type = \"Overhang\";\n this.angle = 0;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Overhang, _data);\n this.depth = obj.depth;\n this.type = obj.type ?? \"Overhang\";\n this.angle = obj.angle ?? 0;\n }\n }\n\n\n static override fromJS(data: any): Overhang {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Overhang();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"depth\"] = this.depth;\n data[\"type\"] = this.type ?? \"Overhang\";\n data[\"angle\"] = this.angle ?? 0;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsArray, IsDefined, IsNumber, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** Several rectangular windows, defined by origin, width and height. */\nexport class RectangularWindows extends _WindowParameterBase {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n @Expose({ name: \"origins\" })\n /** An array of 2D points within the plane of the wall for the origin of each window. Each point should be a list of 2 (x, y) values. The wall plane is assumed to have an origin at the first point of the wall segment and an X-axis extending along the length of the segment. The wall plane Y-axis always points upwards. Therefore, both X and Y values of each origin point should be positive. */\n origins!: number[][];\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsDefined()\n @Expose({ name: \"widths\" })\n /** An array of positive numbers for the window widths. The length of this list must match the length of the origins. */\n widths!: number[];\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsDefined()\n @Expose({ name: \"heights\" })\n /** An array of positive numbers for the window heights. The length of this list must match the length of the origins. */\n heights!: number[];\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RectangularWindows\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RectangularWindows\";\n\t\n @IsArray()\n @Type(() => Boolean)\n @IsBoolean({ each: true })\n @IsOptional()\n @Expose({ name: \"are_doors\" })\n /** An array of booleans that align with the origins and note whether each of the geometries represents a door (True) or a window (False). If None, it will be assumed that all geometries represent windows and they will be translated to Apertures in any resulting Honeybee model. */\n areDoors?: boolean[];\n\t\n\n constructor() {\n super();\n this.type = \"RectangularWindows\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RectangularWindows, _data);\n this.origins = obj.origins;\n this.widths = obj.widths;\n this.heights = obj.heights;\n this.type = obj.type ?? \"RectangularWindows\";\n this.areDoors = obj.areDoors;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): RectangularWindows {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RectangularWindows();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"origins\"] = this.origins;\n data[\"widths\"] = this.widths;\n data[\"heights\"] = this.heights;\n data[\"type\"] = this.type ?? \"RectangularWindows\";\n data[\"are_doors\"] = this.areDoors;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, Min, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** Repeating windows derived from an area ratio with the base wall. */\nexport class RepeatingWindowRatio extends _WindowParameterBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"window_ratio\" })\n /** A number between 0 and 1 for the ratio between the window area and the parent wall surface area. */\n windowRatio!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"window_height\" })\n /** A number for the target height of the windows. Note that, if the window ratio is too large for the height, the ratio will take precedence and the actual window_height will be larger than this value. */\n windowHeight!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"sill_height\" })\n /** A number for the target height above the bottom edge of the wall to start the windows. Note that, if the ratio is too large for the height, the ratio will take precedence and the sill_height will be smaller than this value. */\n sillHeight!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Min(0)\n @Expose({ name: \"horizontal_separation\" })\n /** A number for the target separation between individual window center lines. If this number is larger than the parent rectangle base, only one window will be produced. */\n horizontalSeparation!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RepeatingWindowRatio\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RepeatingWindowRatio\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"vertical_separation\" })\n /** An optional number to create a single vertical separation between top and bottom windows. */\n verticalSeparation: number = 0;\n\t\n\n constructor() {\n super();\n this.type = \"RepeatingWindowRatio\";\n this.verticalSeparation = 0;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RepeatingWindowRatio, _data);\n this.windowRatio = obj.windowRatio;\n this.windowHeight = obj.windowHeight;\n this.sillHeight = obj.sillHeight;\n this.horizontalSeparation = obj.horizontalSeparation;\n this.type = obj.type ?? \"RepeatingWindowRatio\";\n this.verticalSeparation = obj.verticalSeparation ?? 0;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): RepeatingWindowRatio {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RepeatingWindowRatio();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"window_ratio\"] = this.windowRatio;\n data[\"window_height\"] = this.windowHeight;\n data[\"sill_height\"] = this.sillHeight;\n data[\"horizontal_separation\"] = this.horizontalSeparation;\n data[\"type\"] = this.type ?? \"RepeatingWindowRatio\";\n data[\"vertical_separation\"] = this.verticalSeparation ?? 0;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Room2DComparisonProperties } from \"./Room2DComparisonProperties\";\nimport { Room2DDoe2Properties } from \"./Room2DDoe2Properties\";\nimport { Room2DEnergyPropertiesAbridged } from \"./Room2DEnergyPropertiesAbridged\";\nimport { Room2DRadiancePropertiesAbridged } from \"./Room2DRadiancePropertiesAbridged\";\n\nexport class Room2DPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DPropertiesAbridged\";\n\t\n @Type(() => Room2DEnergyPropertiesAbridged)\n @IsInstance(Room2DEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: Room2DEnergyPropertiesAbridged;\n\t\n @Type(() => Room2DRadiancePropertiesAbridged)\n @IsInstance(Room2DRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: Room2DRadiancePropertiesAbridged;\n\t\n @Type(() => Room2DDoe2Properties)\n @IsInstance(Room2DDoe2Properties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"doe2\" })\n /** doe2 */\n doe2?: Room2DDoe2Properties;\n\t\n @Type(() => Room2DComparisonProperties)\n @IsInstance(Room2DComparisonProperties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"comparison\" })\n /** comparison */\n comparison?: Room2DComparisonProperties;\n\t\n\n constructor() {\n super();\n this.type = \"Room2DPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DPropertiesAbridged, _data);\n this.type = obj.type ?? \"Room2DPropertiesAbridged\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n this.doe2 = obj.doe2;\n this.comparison = obj.comparison;\n }\n }\n\n\n static override fromJS(data: any): Room2DPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DPropertiesAbridged\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data[\"doe2\"] = this.doe2;\n data[\"comparison\"] = this.comparison;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { DetailedSkylights } from \"./DetailedSkylights\";\nimport { DetailedWindows } from \"./DetailedWindows\";\nimport { GriddedSkylightArea } from \"./GriddedSkylightArea\";\nimport { GriddedSkylightRatio } from \"./GriddedSkylightRatio\";\nimport { RectangularWindows } from \"./RectangularWindows\";\nimport { RepeatingWindowRatio } from \"./RepeatingWindowRatio\";\nimport { SimpleWindowArea } from \"./SimpleWindowArea\";\nimport { SimpleWindowRatio } from \"./SimpleWindowRatio\";\nimport { SingleWindow } from \"./SingleWindow\";\n\nexport class Room2DComparisonProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DComparisonProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DComparisonProperties\";\n\t\n @IsArray()\n @IsNestedNumberArray()\n @IsOptional()\n @Expose({ name: \"floor_boundary\" })\n /** A list of 2D points representing the outer boundary vertices of the Room2D to which the host Room2D is being compared. The list should include at least 3 points and each point should be a list of 2 (x, y) values. */\n floorBoundary?: number[][];\n\t\n @IsArray()\n @IsNestedNumberArray()\n @IsOptional()\n @Expose({ name: \"floor_holes\" })\n /** Optional list of lists with one list for each hole in the floor plate of the Room2D to which the host Room2D is being compared. Each hole should be a list of at least 2 points and each point a list of 2 (x, y) values. If None, it will be assumed that there are no holes in the floor plate. */\n floorHoles?: number[][][];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"comparison_windows\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'SingleWindow') return SingleWindow.fromJS(item);\n else if (item?.type === 'SimpleWindowArea') return SimpleWindowArea.fromJS(item);\n else if (item?.type === 'SimpleWindowRatio') return SimpleWindowRatio.fromJS(item);\n else if (item?.type === 'RepeatingWindowRatio') return RepeatingWindowRatio.fromJS(item);\n else if (item?.type === 'RectangularWindows') return RectangularWindows.fromJS(item);\n else if (item?.type === 'DetailedWindows') return DetailedWindows.fromJS(item);\n else return item;\n }))\n /** A list of WindowParameter objects that dictate the window geometries of the Room2D to which the host Room2D is being compared. */\n comparisonWindows?: (SingleWindow | SimpleWindowArea | SimpleWindowRatio | RepeatingWindowRatio | RectangularWindows | DetailedWindows)[];\n\t\n @IsOptional()\n @Expose({ name: \"comparison_skylight\" })\n @Transform(({ value }) => {\n const item = value;\n if (item?.type === 'GriddedSkylightArea') return GriddedSkylightArea.fromJS(item);\n else if (item?.type === 'GriddedSkylightRatio') return GriddedSkylightRatio.fromJS(item);\n else if (item?.type === 'DetailedSkylights') return DetailedSkylights.fromJS(item);\n else return item;\n })\n /** A SkylightParameter object for the Room2D to which the host Room2D is being compared. */\n comparisonSkylight?: (GriddedSkylightArea | GriddedSkylightRatio | DetailedSkylights);\n\t\n\n constructor() {\n super();\n this.type = \"Room2DComparisonProperties\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DComparisonProperties, _data);\n this.type = obj.type ?? \"Room2DComparisonProperties\";\n this.floorBoundary = obj.floorBoundary;\n this.floorHoles = obj.floorHoles;\n this.comparisonWindows = obj.comparisonWindows;\n this.comparisonSkylight = obj.comparisonSkylight;\n }\n }\n\n\n static override fromJS(data: any): Room2DComparisonProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DComparisonProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DComparisonProperties\";\n data[\"floor_boundary\"] = this.floorBoundary;\n data[\"floor_holes\"] = this.floorHoles;\n data[\"comparison_windows\"] = this.comparisonWindows;\n data[\"comparison_skylight\"] = this.comparisonSkylight;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** A single window defined by an absolute area. */\nexport class SimpleWindowArea extends _WindowParameterBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"window_area\" })\n /** A number for the window area in current model units. If this area is larger than the area of the Wall that it is appliedto, the window will fill the parent Wall at a 99 percent ratio. */\n windowArea!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"SimpleWindowArea\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"SimpleWindowArea\";\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"rect_split\" })\n /** Boolean to note whether rectangular portions of base Face should be extracted before scaling them to create apertures. For pentagonal gabled geometries, this results in one rectangle and one triangle, which can often look more realistic and is a better input for engines like EnergyPlus that cannot model windows with more than 4 vertices. However, if a single pentagonal window is desired for such a gabled shape, this input can be set to False to produce such a result. */\n rectSplit: boolean = true;\n\t\n\n constructor() {\n super();\n this.type = \"SimpleWindowArea\";\n this.rectSplit = true;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(SimpleWindowArea, _data);\n this.windowArea = obj.windowArea;\n this.type = obj.type ?? \"SimpleWindowArea\";\n this.rectSplit = obj.rectSplit ?? true;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): SimpleWindowArea {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new SimpleWindowArea();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"window_area\"] = this.windowArea;\n data[\"type\"] = this.type ?? \"SimpleWindowArea\";\n data[\"rect_split\"] = this.rectSplit ?? true;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** A single window defined by an area ratio with the base surface. */\nexport class SimpleWindowRatio extends _WindowParameterBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"window_ratio\" })\n /** A number between 0 and 1 for the ratio between the window area and the parent wall surface area. */\n windowRatio!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"SimpleWindowRatio\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"SimpleWindowRatio\";\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"rect_split\" })\n /** Boolean to note whether rectangular portions of base Face should be extracted before scaling them to create apertures. For pentagonal gabled geometries, this results in one rectangle and one triangle, which can often look more realistic and is a better input for engines like EnergyPlus that cannot model windows with more than 4 vertices. However, if a single pentagonal window is desired for such a gabled shape, this input can be set to False to produce such a result. */\n rectSplit: boolean = true;\n\t\n\n constructor() {\n super();\n this.type = \"SimpleWindowRatio\";\n this.rectSplit = true;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(SimpleWindowRatio, _data);\n this.windowRatio = obj.windowRatio;\n this.type = obj.type ?? \"SimpleWindowRatio\";\n this.rectSplit = obj.rectSplit ?? true;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): SimpleWindowRatio {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new SimpleWindowRatio();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"window_ratio\"] = this.windowRatio;\n data[\"type\"] = this.type ?? \"SimpleWindowRatio\";\n data[\"rect_split\"] = this.rectSplit ?? true;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsNumber, IsDefined, IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** A single window in the wall center defined by a width * height. */\nexport class SingleWindow extends _WindowParameterBase {\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"width\" })\n /** A number for the window width. Note that, if this width is applied to a wall that is too narrow for this width, the generated window will automatically be shortened when it is applied to the wall. In this way, setting the width to be `float(\"\"inf\"\")` will create parameters that always generate a ribbon window. */\n width!: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"height\" })\n /** A number for the window height. Note that, if this height is applied to a wall that is too short for this height, the generated window will automatically be shortened when it is applied to the wall. */\n height!: number;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"SingleWindow\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"SingleWindow\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"sill_height\" })\n /** A number for the window sill height. */\n sillHeight: number = 1;\n\t\n\n constructor() {\n super();\n this.type = \"SingleWindow\";\n this.sillHeight = 1;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(SingleWindow, _data);\n this.width = obj.width;\n this.height = obj.height;\n this.type = obj.type ?? \"SingleWindow\";\n this.sillHeight = obj.sillHeight ?? 1;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): SingleWindow {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new SingleWindow();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"width\"] = this.width;\n data[\"height\"] = this.height;\n data[\"type\"] = this.type ?? \"SingleWindow\";\n data[\"sill_height\"] = this.sillHeight ?? 1;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Autocalculate } from \"honeybee-schema\";\n\nexport class Room2DDoe2Properties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DDoe2Properties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DDoe2Properties\";\n\t\n @IsOptional()\n @Expose({ name: \"assigned_flow\" })\n /** A number for the design supply air flow rate for the zone the Room is assigned to (cfm). This establishes the minimum allowed design air flow. Note that the actual design flow may be larger. If Autocalculate, this parameter will not be written into the INP. */\n assignedFlow: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"flow_per_area\" })\n /** A number for the design supply air flow rate to the zone per unit floor area (cfm/ft2). If Autocalculate, this parameter will not be written into the INP. */\n flowPerArea: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"min_flow_ratio\" })\n /** A number between 0 and 1 for the minimum allowable zone air supply flow rate, expressed as a fraction of design flow rate. Applicable to variable-volume type systems only. If Autocalculate, this parameter will not be written into the INP. */\n minFlowRatio: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"min_flow_per_area\" })\n /** A number for the minimum air flow per square foot of floor area (cfm/ft2). This is an alternative way of specifying the min_flow_ratio. If Autocalculate, this parameter will not be written into the INP. */\n minFlowPerArea: (Autocalculate | number) = new Autocalculate();\n\t\n @IsOptional()\n @Expose({ name: \"hmax_flow_ratio\" })\n /** A number between 0 and 1 for the ratio of the maximum (or fixed) heating airflow to the cooling airflow. The specific meaning varies according to the type of zone terminal. If Autocalculate, this parameter will not be written into the INP. */\n hmaxFlowRatio: (Autocalculate | number) = new Autocalculate();\n\t\n\n constructor() {\n super();\n this.type = \"Room2DDoe2Properties\";\n this.assignedFlow = new Autocalculate();\n this.flowPerArea = new Autocalculate();\n this.minFlowRatio = new Autocalculate();\n this.minFlowPerArea = new Autocalculate();\n this.hmaxFlowRatio = new Autocalculate();\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DDoe2Properties, _data);\n this.type = obj.type ?? \"Room2DDoe2Properties\";\n this.assignedFlow = obj.assignedFlow ?? new Autocalculate();\n this.flowPerArea = obj.flowPerArea ?? new Autocalculate();\n this.minFlowRatio = obj.minFlowRatio ?? new Autocalculate();\n this.minFlowPerArea = obj.minFlowPerArea ?? new Autocalculate();\n this.hmaxFlowRatio = obj.hmaxFlowRatio ?? new Autocalculate();\n }\n }\n\n\n static override fromJS(data: any): Room2DDoe2Properties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DDoe2Properties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DDoe2Properties\";\n data[\"assigned_flow\"] = this.assignedFlow ?? new Autocalculate();\n data[\"flow_per_area\"] = this.flowPerArea ?? new Autocalculate();\n data[\"min_flow_ratio\"] = this.minFlowRatio ?? new Autocalculate();\n data[\"min_flow_per_area\"] = this.minFlowPerArea ?? new Autocalculate();\n data[\"hmax_flow_ratio\"] = this.hmaxFlowRatio ?? new Autocalculate();\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, MinLength, MaxLength, IsNumber, Min, IsArray, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { DaylightingControl } from \"honeybee-schema\";\nimport { ProcessAbridged } from \"honeybee-schema\";\nimport { VentilationControlAbridged } from \"honeybee-schema\";\nimport { VentilationFan } from \"honeybee-schema\";\nimport { VentilationOpening } from \"honeybee-schema\";\n\nexport class Room2DEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DEnergyPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DEnergyPropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"construction_set\" })\n /** Name of a ConstructionSet to specify all constructions for the Room2D. If None, the Room2D will use the Story or Building construction_set or the Model global_construction_set. Any ConstructionSet assigned here will override those assigned to these objects. */\n constructionSet?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"program_type\" })\n /** Name of a ProgramType to specify all schedules and loads for the Room2D. If None, the Room2D will have no loads or setpoints. */\n programType?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"hvac\" })\n /** An optional identifier of a HVAC system (such as an IdealAirSystem) that specifies how the Room2D is conditioned. If None, it will be assumed that the Room2D is not conditioned. */\n hvac?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"shw\" })\n /** An optional identifier of a Service Hot Water (SHW) system that specifies how the hot water load of the Room is met. If None, the hot water load will be met with a generic system that only measures thermal loadand does not account for system efficiencies. */\n shw?: string;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"person_count\" })\n /** Number for the total number of people in the room or an Unassigned object to indicate that people are assigned via the program_type. */\n personCount?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"lighting_watts\" })\n /** Number for the total wattage of lighting in the room or an Unassigned object to indicate that lighting is assigned via the program_type. */\n lightingWatts?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"electric_equipment_watts\" })\n /** Number for the total wattage of electric equipment in the room or an Unassigned object to indicate that electric equipment is assigned via the program_type. */\n electricEquipmentWatts?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"gas_equipment_watts\" })\n /** Number for the total wattage of gas equipment in the room or an Unassigned object to indicate that gas equipment is assigned via the program_type. */\n gasEquipmentWatts?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"hot_water_flow\" })\n /** Number for the total flow of hot water in the room or an Unassigned object to indicate that service hot water is assigned via the program_type. */\n hotWaterFlow?: number;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"infiltration_ach\" })\n /** Number for the infiltration of the room in air changes per hour or an Unassigned object to indicate that infiltration is assigned via the program_type. */\n infiltrationAch?: number;\n\t\n @IsArray()\n @Type(() => ProcessAbridged)\n @IsInstance(ProcessAbridged, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"process_loads\" })\n /** An optional list of Process objects for process loads within the room. These can represent wood burning fireplaces, kilns, manufacturing equipment, and various industrial processes. They can also be used to represent certain pieces of equipment to be separated from the other end uses, such as MRI machines, theatrical lighting, and elevators. */\n processLoads?: ProcessAbridged[];\n\t\n @Type(() => DaylightingControl)\n @IsInstance(DaylightingControl)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"daylighting_control\" })\n /** An optional DaylightingControl object to dictate the dimming of lights. If None, the lighting will respond only to the schedule and not the daylight conditions within the room. */\n daylightingControl?: DaylightingControl;\n\t\n @Type(() => VentilationControlAbridged)\n @IsInstance(VentilationControlAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"window_vent_control\" })\n /** An optional VentilationControl object to dictate the opening of windows. If None, the windows will never open. */\n windowVentControl?: VentilationControlAbridged;\n\t\n @Type(() => VentilationOpening)\n @IsInstance(VentilationOpening)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"window_vent_opening\" })\n /** An optional VentilationOpening to specify the operable portion of all windows of the Room2D. If None, the windows will never open. */\n windowVentOpening?: VentilationOpening;\n\t\n @IsArray()\n @Type(() => VentilationFan)\n @IsInstance(VentilationFan, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"fans\" })\n /** An optional list of VentilationFan objects for fans within the room. Note that these fans are not connected to the heating or cooling system and are meant to represent the intentional circulation of unconditioned outdoor air for the purposes of keeping a space cooler, drier or free of indoor pollutants (as in the case of kitchen or bathroom exhaust fans). For the specification of mechanical ventilation of conditioned outdoor air, the Room.ventilation property should be used and the Room should be given a HVAC that can meet this specification. */\n fans?: VentilationFan[];\n\t\n\n constructor() {\n super();\n this.type = \"Room2DEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DEnergyPropertiesAbridged, _data);\n this.type = obj.type ?? \"Room2DEnergyPropertiesAbridged\";\n this.constructionSet = obj.constructionSet;\n this.programType = obj.programType;\n this.hvac = obj.hvac;\n this.shw = obj.shw;\n this.personCount = obj.personCount;\n this.lightingWatts = obj.lightingWatts;\n this.electricEquipmentWatts = obj.electricEquipmentWatts;\n this.gasEquipmentWatts = obj.gasEquipmentWatts;\n this.hotWaterFlow = obj.hotWaterFlow;\n this.infiltrationAch = obj.infiltrationAch;\n this.processLoads = obj.processLoads;\n this.daylightingControl = obj.daylightingControl;\n this.windowVentControl = obj.windowVentControl;\n this.windowVentOpening = obj.windowVentOpening;\n this.fans = obj.fans;\n }\n }\n\n\n static override fromJS(data: any): Room2DEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DEnergyPropertiesAbridged\";\n data[\"construction_set\"] = this.constructionSet;\n data[\"program_type\"] = this.programType;\n data[\"hvac\"] = this.hvac;\n data[\"shw\"] = this.shw;\n data[\"person_count\"] = this.personCount;\n data[\"lighting_watts\"] = this.lightingWatts;\n data[\"electric_equipment_watts\"] = this.electricEquipmentWatts;\n data[\"gas_equipment_watts\"] = this.gasEquipmentWatts;\n data[\"hot_water_flow\"] = this.hotWaterFlow;\n data[\"infiltration_ach\"] = this.infiltrationAch;\n data[\"process_loads\"] = this.processLoads;\n data[\"daylighting_control\"] = this.daylightingControl;\n data[\"window_vent_control\"] = this.windowVentControl;\n data[\"window_vent_opening\"] = this.windowVentOpening;\n data[\"fans\"] = this.fans;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ExteriorApertureGridParameter } from \"./ExteriorApertureGridParameter\";\nimport { ExteriorFaceGridParameter } from \"./ExteriorFaceGridParameter\";\nimport { RoomGridParameter } from \"./RoomGridParameter\";\nimport { RoomRadialGridParameter } from \"./RoomRadialGridParameter\";\n\nexport class Room2DRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Room2DRadiancePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Room2DRadiancePropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"modifier_set\" })\n /** Identifier of a ModifierSet to specify all modifiers for the Room2D. If None, the Room2D will use the Story or Building modifier_set or the Model global_modifier_set. Any ModifierSet assigned here will override those assigned to the parent objects. */\n modifierSet?: string;\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"grid_parameters\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'RoomGridParameter') return RoomGridParameter.fromJS(item);\n else if (item?.type === 'RoomRadialGridParameter') return RoomRadialGridParameter.fromJS(item);\n else if (item?.type === 'ExteriorFaceGridParameter') return ExteriorFaceGridParameter.fromJS(item);\n else if (item?.type === 'ExteriorApertureGridParameter') return ExteriorApertureGridParameter.fromJS(item);\n else return item;\n }))\n /** An optional list of GridParameter objects to describe how sensor grids should be generated for the Room2D. */\n gridParameters?: (RoomGridParameter | RoomRadialGridParameter | ExteriorFaceGridParameter | ExteriorApertureGridParameter)[];\n\t\n\n constructor() {\n super();\n this.type = \"Room2DRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Room2DRadiancePropertiesAbridged, _data);\n this.type = obj.type ?? \"Room2DRadiancePropertiesAbridged\";\n this.modifierSet = obj.modifierSet;\n this.gridParameters = obj.gridParameters;\n }\n }\n\n\n static override fromJS(data: any): Room2DRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"Room2DRadiancePropertiesAbridged\";\n data[\"modifier_set\"] = this.modifierSet;\n data[\"grid_parameters\"] = this.gridParameters;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsNumber, IsEnum, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _GridParameterBase } from \"./_GridParameterBase\";\nimport { ExteriorApertureType } from \"./ExteriorApertureType\";\n\n/** Instructions for a SensorGrid generated from exterior Aperture. */\nexport class ExteriorApertureGridParameter extends _GridParameterBase {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ExteriorApertureGridParameter\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ExteriorApertureGridParameter\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"offset\" })\n /** A number for how far to offset the grid from the Apertures. (Default: 0.1, suitable for Models in Meters). */\n offset: number = 0.1;\n\t\n @Type(() => String)\n @IsEnum(ExteriorApertureType)\n @IsOptional()\n @Expose({ name: \"aperture_type\" })\n /** Text to specify the type of Aperture that will be used to generate grids. Window indicates Apertures in Walls. Skylights are in parent Roof faces. */\n apertureType: ExteriorApertureType = ExteriorApertureType.All;\n\t\n\n constructor() {\n super();\n this.type = \"ExteriorApertureGridParameter\";\n this.offset = 0.1;\n this.apertureType = ExteriorApertureType.All;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ExteriorApertureGridParameter, _data);\n this.type = obj.type ?? \"ExteriorApertureGridParameter\";\n this.offset = obj.offset ?? 0.1;\n this.apertureType = obj.apertureType ?? ExteriorApertureType.All;\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n }\n }\n\n\n static override fromJS(data: any): ExteriorApertureGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ExteriorApertureGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ExteriorApertureGridParameter\";\n data[\"offset\"] = this.offset ?? 0.1;\n data[\"aperture_type\"] = this.apertureType ?? ExteriorApertureType.All;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum ExteriorApertureType {\n Window = \"Window\",\n Skylight = \"Skylight\",\n All = \"All\",\n}","import { IsString, IsOptional, Equals, IsNumber, IsEnum, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _GridParameterBase } from \"./_GridParameterBase\";\nimport { ExteriorFaceType } from \"./ExteriorFaceType\";\n\n/** Instructions for a SensorGrid generated from exterior Faces. */\nexport class ExteriorFaceGridParameter extends _GridParameterBase {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ExteriorFaceGridParameter\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ExteriorFaceGridParameter\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"offset\" })\n /** A number for how far to offset the grid from the Faces. (Default: 0.1, suitable for Models in Meters). */\n offset: number = 0.1;\n\t\n @Type(() => String)\n @IsEnum(ExteriorFaceType)\n @IsOptional()\n @Expose({ name: \"face_type\" })\n /** Text to specify the type of face that will be used to generate grids. Note that only Faces with Outdoors boundary conditions will be used, meaning that most Floors will typically be excluded unless they represent the underside of a cantilever. */\n faceType: ExteriorFaceType = ExteriorFaceType.Wall;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"punched_geometry\" })\n /** A boolean to note whether the punched_geometry of the faces should be used (True) with the areas of sub-faces removed from the grid or the full geometry should be used (False). */\n punchedGeometry: boolean = false;\n\t\n\n constructor() {\n super();\n this.type = \"ExteriorFaceGridParameter\";\n this.offset = 0.1;\n this.faceType = ExteriorFaceType.Wall;\n this.punchedGeometry = false;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ExteriorFaceGridParameter, _data);\n this.type = obj.type ?? \"ExteriorFaceGridParameter\";\n this.offset = obj.offset ?? 0.1;\n this.faceType = obj.faceType ?? ExteriorFaceType.Wall;\n this.punchedGeometry = obj.punchedGeometry ?? false;\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n }\n }\n\n\n static override fromJS(data: any): ExteriorFaceGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ExteriorFaceGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ExteriorFaceGridParameter\";\n data[\"offset\"] = this.offset ?? 0.1;\n data[\"face_type\"] = this.faceType ?? ExteriorFaceType.Wall;\n data[\"punched_geometry\"] = this.punchedGeometry ?? false;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum ExteriorFaceType {\n Wall = \"Wall\",\n Roof = \"Roof\",\n Floor = \"Floor\",\n All = \"All\",\n}","import { IsString, IsOptional, Equals, IsNumber, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _GridParameterBase } from \"./_GridParameterBase\";\n\n/** Instructions for a SensorGrid generated from a Room2D's floors. */\nexport class RoomGridParameter extends _GridParameterBase {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RoomGridParameter\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RoomGridParameter\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"offset\" })\n /** A number for how far to offset the grid from the Room2D floors. (Default: 1.0, suitable for Models in Meters). */\n offset: number = 1;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"wall_offset\" })\n /** A number for the distance at which sensors close to walls should be removed. Note that this option has no effect unless the value is more than half of the dimension. */\n wallOffset: number = 0;\n\t\n\n constructor() {\n super();\n this.type = \"RoomGridParameter\";\n this.offset = 1;\n this.wallOffset = 0;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RoomGridParameter, _data);\n this.type = obj.type ?? \"RoomGridParameter\";\n this.offset = obj.offset ?? 1;\n this.wallOffset = obj.wallOffset ?? 0;\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n }\n }\n\n\n static override fromJS(data: any): RoomGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RoomGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"RoomGridParameter\";\n data[\"offset\"] = this.offset ?? 1;\n data[\"wall_offset\"] = this.wallOffset ?? 0;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsInt, IsOptional, IsArray, IsNumber, IsString, Equals, IsDefined, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { Autocalculate } from \"honeybee-schema\";\n\n/** Instructions for a SensorGrid of radial directions around positions from floors.\\n\\nThis type of sensor grid is particularly helpful for studies of multiple\\nview directions, such as imageless glare studies. */\nexport class RoomRadialGridParameter {\n @Type(() => Number)\n @IsInt()\n @IsOptional()\n @Expose({ name: \"dir_count\" })\n /** A positive integer for the number of radial directions to be generated around each position. */\n dirCount: number = 8;\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsOptional()\n @Expose({ name: \"start_vector\" })\n /** A vector as 3 (x, y, z) values to set the start direction of the generated directions. This can be used to orient the resulting sensors to specific parts of the scene. It can also change the elevation of the resulting directions since this start vector will always be rotated in the XY plane to generate the resulting directions. */\n startVector?: number[];\n\t\n @IsOptional()\n @Expose({ name: \"mesh_radius\" })\n /** An optional number to override the radius of the meshes generated around each sensor. If Autocalculate, it will be equal to 45 percent of the grid dimension. */\n meshRadius: (Autocalculate | number) = new Autocalculate();\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"RoomRadialGridParameter\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"RoomRadialGridParameter\";\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"offset\" })\n /** A number for how far to offset the grid from the Room2D floors. (Default: 1.0, suitable for Models in Meters). */\n offset: number = 1;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Expose({ name: \"wall_offset\" })\n /** A number for the distance at which sensors close to walls should be removed. Note that this option has no effect unless the value is more than half of the dimension. */\n wallOffset: number = 0;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsDefined()\n @Expose({ name: \"dimension\" })\n /** The dimension of the grid cells as a number. */\n dimension!: number;\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"include_mesh\" })\n /** A boolean to note whether the resulting SensorGrid should include the mesh. */\n includeMesh: boolean = true;\n\t\n\n constructor() {\n this.dirCount = 8;\n this.meshRadius = new Autocalculate();\n this.type = \"RoomRadialGridParameter\";\n this.offset = 1;\n this.wallOffset = 0;\n this.includeMesh = true;\n }\n\n\n init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(RoomRadialGridParameter, _data);\n this.dirCount = obj.dirCount ?? 8;\n this.startVector = obj.startVector;\n this.meshRadius = obj.meshRadius ?? new Autocalculate();\n this.type = obj.type ?? \"RoomRadialGridParameter\";\n this.offset = obj.offset ?? 1;\n this.wallOffset = obj.wallOffset ?? 0;\n this.dimension = obj.dimension;\n this.includeMesh = obj.includeMesh ?? true;\n }\n }\n\n\n static fromJS(data: any): RoomRadialGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RoomRadialGridParameter();\n result.init(data);\n return result;\n }\n\n\ttoJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dir_count\"] = this.dirCount ?? 8;\n data[\"start_vector\"] = this.startVector;\n data[\"mesh_radius\"] = this.meshRadius ?? new Autocalculate();\n data[\"type\"] = this.type ?? \"RoomRadialGridParameter\";\n data[\"offset\"] = this.offset ?? 1;\n data[\"wall_offset\"] = this.wallOffset ?? 0;\n data[\"dimension\"] = this.dimension;\n data[\"include_mesh\"] = this.includeMesh ?? true;\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { StoryEnergyPropertiesAbridged } from \"./StoryEnergyPropertiesAbridged\";\nimport { StoryRadiancePropertiesAbridged } from \"./StoryRadiancePropertiesAbridged\";\n\nexport class StoryPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"StoryPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"StoryPropertiesAbridged\";\n\t\n @Type(() => StoryEnergyPropertiesAbridged)\n @IsInstance(StoryEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: StoryEnergyPropertiesAbridged;\n\t\n @Type(() => StoryRadiancePropertiesAbridged)\n @IsInstance(StoryRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: StoryRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"StoryPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(StoryPropertiesAbridged, _data);\n this.type = obj.type ?? \"StoryPropertiesAbridged\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): StoryPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new StoryPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"StoryPropertiesAbridged\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, MinLength, MaxLength, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class StoryEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"StoryEnergyPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"StoryEnergyPropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"construction_set\" })\n /** Name of a ConstructionSet to specify all constructions for the Story. If None, the Story will use the Building construction_set or the Model global_construction_set. Any ConstructionSet assigned here will override those assigned to these objects. */\n constructionSet?: string;\n\t\n\n constructor() {\n super();\n this.type = \"StoryEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(StoryEnergyPropertiesAbridged, _data);\n this.type = obj.type ?? \"StoryEnergyPropertiesAbridged\";\n this.constructionSet = obj.constructionSet;\n }\n }\n\n\n static override fromJS(data: any): StoryEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new StoryEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"StoryEnergyPropertiesAbridged\";\n data[\"construction_set\"] = this.constructionSet;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class StoryRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"StoryRadiancePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"StoryRadiancePropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"modifier_set\" })\n /** Name of a ModifierSet to specify all modifiers for the Story. If None, the Story will use the Building modifier_set or the Model global_modifier_set. Any ModifierSet assigned here will override those assigned to the parent objects. */\n modifierSet?: string;\n\t\n\n constructor() {\n super();\n this.type = \"StoryRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(StoryRadiancePropertiesAbridged, _data);\n this.type = obj.type ?? \"StoryRadiancePropertiesAbridged\";\n this.modifierSet = obj.modifierSet;\n }\n }\n\n\n static override fromJS(data: any): StoryRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new StoryRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"StoryRadiancePropertiesAbridged\";\n data[\"modifier_set\"] = this.modifierSet;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum StoryType {\n Standard = \"Standard\",\n CeilingPlenum = \"CeilingPlenum\",\n FloorPlenum = \"FloorPlenum\",\n}","import { IsArray, IsDefined, IsInstance, ValidateNested, IsString, IsOptional, Equals, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { ContextShadePropertiesAbridged } from \"./ContextShadePropertiesAbridged\";\nimport { Face3D } from \"honeybee-schema\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { Mesh3D } from \"honeybee-schema\";\n\nexport class ContextShade extends IDdBaseModel {\n @IsArray()\n @IsDefined()\n @Expose({ name: \"geometry\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'Face3D') return Face3D.fromJS(item);\n else if (item?.type === 'Mesh3D') return Mesh3D.fromJS(item);\n else return item;\n }))\n /** An array of planar Face3Ds and or Mesh3Ds that together represent the context shade. */\n geometry!: (Face3D | Mesh3D)[];\n\t\n @Type(() => ContextShadePropertiesAbridged)\n @IsInstance(ContextShadePropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: ContextShadePropertiesAbridged;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ContextShade\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ContextShade\";\n\t\n @Type(() => Boolean)\n @IsBoolean()\n @IsOptional()\n @Expose({ name: \"is_detached\" })\n /** Boolean to note whether this shade is detached from any of the other geometry in the model. Cases where this should be True include shade representing surrounding buildings or context. */\n isDetached: boolean = true;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShade\";\n this.isDetached = true;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ContextShade, _data);\n this.geometry = obj.geometry;\n this.properties = obj.properties;\n this.type = obj.type ?? \"ContextShade\";\n this.isDetached = obj.isDetached ?? true;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): ContextShade {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShade();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"geometry\"] = this.geometry;\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"ContextShade\";\n data[\"is_detached\"] = this.isDetached ?? true;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ContextShadeEnergyPropertiesAbridged } from \"./ContextShadeEnergyPropertiesAbridged\";\nimport { ContextShadeRadiancePropertiesAbridged } from \"./ContextShadeRadiancePropertiesAbridged\";\n\nexport class ContextShadePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ContextShadePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ContextShadePropertiesAbridged\";\n\t\n @Type(() => ContextShadeEnergyPropertiesAbridged)\n @IsInstance(ContextShadeEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: ContextShadeEnergyPropertiesAbridged;\n\t\n @Type(() => ContextShadeRadiancePropertiesAbridged)\n @IsInstance(ContextShadeRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: ContextShadeRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShadePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ContextShadePropertiesAbridged, _data);\n this.type = obj.type ?? \"ContextShadePropertiesAbridged\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): ContextShadePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShadePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ContextShadePropertiesAbridged\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, MinLength, MaxLength, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class ContextShadeEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ContextShadeEnergyPropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ContextShadeEnergyPropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"construction\" })\n /** Name of a ShadeConstruction to set the reflectance and specularity of the ContextShade. If None, the the EnergyPlus default of 0.2 diffuse reflectance will be used. */\n construction?: string;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n @Expose({ name: \"transmittance_schedule\" })\n /** Name of a schedule to set the transmittance of the ContextShade, which can vary throughout the simulation. If None, the ContextShade will be completely opaque. */\n transmittanceSchedule?: string;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShadeEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ContextShadeEnergyPropertiesAbridged, _data);\n this.type = obj.type ?? \"ContextShadeEnergyPropertiesAbridged\";\n this.construction = obj.construction;\n this.transmittanceSchedule = obj.transmittanceSchedule;\n }\n }\n\n\n static override fromJS(data: any): ContextShadeEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShadeEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ContextShadeEnergyPropertiesAbridged\";\n data[\"construction\"] = this.construction;\n data[\"transmittance_schedule\"] = this.transmittanceSchedule;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class ContextShadeRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ContextShadeRadiancePropertiesAbridged\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ContextShadeRadiancePropertiesAbridged\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Expose({ name: \"modifier\" })\n /** Name of a Modifier to set the reflectance and specularity of the ContextShade. If None, the the default of 0.2 diffuse reflectance will be used. */\n modifier?: string;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShadeRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ContextShadeRadiancePropertiesAbridged, _data);\n this.type = obj.type ?? \"ContextShadeRadiancePropertiesAbridged\";\n this.modifier = obj.modifier;\n }\n }\n\n\n static override fromJS(data: any): ContextShadeRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShadeRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ContextShadeRadiancePropertiesAbridged\";\n data[\"modifier\"] = this.modifier;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** Choices for how the shading device is controlled. */\nexport enum ControlType {\n AlwaysOn = \"AlwaysOn\",\n OnIfHighSolarOnWindow = \"OnIfHighSolarOnWindow\",\n OnIfHighHorizontalSolar = \"OnIfHighHorizontalSolar\",\n OnIfHighOutdoorAirTemperature = \"OnIfHighOutdoorAirTemperature\",\n OnIfHighZoneAirTemperature = \"OnIfHighZoneAirTemperature\",\n OnIfHighZoneCooling = \"OnIfHighZoneCooling\",\n OnNightIfLowOutdoorTempAndOffDay = \"OnNightIfLowOutdoorTempAndOffDay\",\n OnNightIfLowInsideTempAndOffDay = \"OnNightIfLowInsideTempAndOffDay\",\n OnNightIfHeatingAndOffDay = \"OnNightIfHeatingAndOffDay\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum EconomizerType {\n NoEconomizer = \"NoEconomizer\",\n DifferentialDryBulb = \"DifferentialDryBulb\",\n DifferentialEnthalpy = \"DifferentialEnthalpy\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum EvaporativeCoolerEquipmentType {\n EvapCoolers_ElectricBaseboard = \"EvapCoolers_ElectricBaseboard\",\n EvapCoolers_BoilerBaseboard = \"EvapCoolers_BoilerBaseboard\",\n EvapCoolers_ASHPBaseboard = \"EvapCoolers_ASHPBaseboard\",\n EvapCoolers_DHWBaseboard = \"EvapCoolers_DHWBaseboard\",\n EvapCoolers_Furnace = \"EvapCoolers_Furnace\",\n EvapCoolers_UnitHeaters = \"EvapCoolers_UnitHeaters\",\n EvapCoolers = \"EvapCoolers\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum FaceType {\n Wall = \"Wall\",\n Floor = \"Floor\",\n RoofCeiling = \"RoofCeiling\",\n AirBoundary = \"AirBoundary\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum FCUEquipmentType {\n FCU_Chiller_Boiler = \"FCU_Chiller_Boiler\",\n FCU_Chiller_ASHP = \"FCU_Chiller_ASHP\",\n FCU_Chiller_DHW = \"FCU_Chiller_DHW\",\n FCU_Chiller_ElectricBaseboard = \"FCU_Chiller_ElectricBaseboard\",\n FCU_Chiller_GasHeaters = \"FCU_Chiller_GasHeaters\",\n FCU_Chiller = \"FCU_Chiller\",\n FCU_ACChiller_Boiler = \"FCU_ACChiller_Boiler\",\n FCU_ACChiller_ASHP = \"FCU_ACChiller_ASHP\",\n FCU_ACChiller_DHW = \"FCU_ACChiller_DHW\",\n FCU_ACChiller_ElectricBaseboard = \"FCU_ACChiller_ElectricBaseboard\",\n FCU_ACChiller_GasHeaters = \"FCU_ACChiller_GasHeaters\",\n FCU_ACChiller = \"FCU_ACChiller\",\n FCU_DCW_Boiler = \"FCU_DCW_Boiler\",\n FCU_DCW_ASHP = \"FCU_DCW_ASHP\",\n FCU_DCW_DHW = \"FCU_DCW_DHW\",\n FCU_DCW_ElectricBaseboard = \"FCU_DCW_ElectricBaseboard\",\n FCU_DCW_GasHeaters = \"FCU_DCW_GasHeaters\",\n FCU_DCW = \"FCU_DCW\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum FCUwithDOASEquipmentType {\n DOAS_FCU_Chiller_Boiler = \"DOAS_FCU_Chiller_Boiler\",\n DOAS_FCU_Chiller_ASHP = \"DOAS_FCU_Chiller_ASHP\",\n DOAS_FCU_Chiller_DHW = \"DOAS_FCU_Chiller_DHW\",\n DOAS_FCU_Chiller_ElectricBaseboard = \"DOAS_FCU_Chiller_ElectricBaseboard\",\n DOAS_FCU_Chiller_GasHeaters = \"DOAS_FCU_Chiller_GasHeaters\",\n DOAS_FCU_Chiller = \"DOAS_FCU_Chiller\",\n DOAS_FCU_ACChiller_Boiler = \"DOAS_FCU_ACChiller_Boiler\",\n DOAS_FCU_ACChiller_ASHP = \"DOAS_FCU_ACChiller_ASHP\",\n DOAS_FCU_ACChiller_DHW = \"DOAS_FCU_ACChiller_DHW\",\n DOAS_FCU_ACChiller_ElectricBaseboard = \"DOAS_FCU_ACChiller_ElectricBaseboard\",\n DOAS_FCU_ACChiller_GasHeaters = \"DOAS_FCU_ACChiller_GasHeaters\",\n DOAS_FCU_ACChiller = \"DOAS_FCU_ACChiller\",\n DOAS_FCU_DCW_Boiler = \"DOAS_FCU_DCW_Boiler\",\n DOAS_FCU_DCW_ASHP = \"DOAS_FCU_DCW_ASHP\",\n DOAS_FCU_DCW_DHW = \"DOAS_FCU_DCW_DHW\",\n DOAS_FCU_DCW_ElectricBaseboard = \"DOAS_FCU_DCW_ElectricBaseboard\",\n DOAS_FCU_DCW_GasHeaters = \"DOAS_FCU_DCW_GasHeaters\",\n DOAS_FCU_DCW = \"DOAS_FCU_DCW\",\n}","// Auto-generated\n\n/** Designates the acceptable fuel types for process loads. */\nexport enum FuelTypes {\n Electricity = \"Electricity\",\n NaturalGas = \"NaturalGas\",\n Propane = \"Propane\",\n FuelOilNo1 = \"FuelOilNo1\",\n FuelOilNo2 = \"FuelOilNo2\",\n Diesel = \"Diesel\",\n Gasoline = \"Gasoline\",\n Coal = \"Coal\",\n Steam = \"Steam\",\n DistrictHeating = \"DistrictHeating\",\n DistrictCooling = \"DistrictCooling\",\n OtherFuel1 = \"OtherFuel1\",\n OtherFuel2 = \"OtherFuel2\",\n None = \"None\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum FurnaceEquipmentType {\n Furnace = \"Furnace\",\n Furnace_Electric = \"Furnace_Electric\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum GasType {\n Air = \"Air\",\n Argon = \"Argon\",\n Krypton = \"Krypton\",\n Xenon = \"Xenon\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum GasUnitHeaterEquipmentType {\n GasHeaters = \"GasHeaters\",\n}","import { IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Equals, Matches, IsArray, IsEnum, IsNumber, Min, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { Building } from \"./Building\";\nimport { ContextShade } from \"./ContextShade\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { ModelProperties } from \"./ModelProperties\";\nimport { Units } from \"./Units\";\n\nexport class Model extends IDdBaseModel {\n @Type(() => ModelProperties)\n @IsInstance(ModelProperties)\n @ValidateNested()\n @IsDefined()\n @Expose({ name: \"properties\" })\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: ModelProperties;\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"Model\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"Model\";\n\t\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Matches(/([0-9]+)\\.([0-9]+)\\.([0-9]+)/)\n @Expose({ name: \"version\" })\n /** Text string for the current version of the schema. */\n version: string = \"0.0.0\";\n\t\n @IsArray()\n @Type(() => Building)\n @IsInstance(Building, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"buildings\" })\n /** A list of Buildings in the model. */\n buildings?: Building[];\n\t\n @IsArray()\n @Type(() => ContextShade)\n @IsInstance(ContextShade, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"context_shades\" })\n /** A list of ContextShades in the model. */\n contextShades?: ContextShade[];\n\t\n @Type(() => String)\n @IsEnum(Units)\n @IsOptional()\n @Expose({ name: \"units\" })\n /** Text indicating the units in which the model geometry exists. This is used to scale the geometry to the correct units for simulation engines like EnergyPlus, which requires all geometry be in meters. */\n units: Units = Units.Meters;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"tolerance\" })\n /** The maximum difference between x, y, and z values at which vertices are considered equivalent. This value should be in the Model units and is used in a variety of checks and operations. A value of 0 will result in bypassing all checks so it is recommended that this always be a positive number when checks have not already been performed on a Model. The default of 0.01 is suitable for models in meters. */\n tolerance: number = 0.01;\n\t\n @Type(() => Number)\n @IsNumber()\n @IsOptional()\n @Min(0)\n @Expose({ name: \"angle_tolerance\" })\n /** The max angle difference in degrees that vertices are allowed to differ from one another in order to consider them colinear. This value is used in a variety of checks and operations that can be performed on geometry. A value of 0 will result in no checks and an inability to perform certain operations so it is recommended that this always be a positive number when checks have not already been performed on a given Model. */\n angleTolerance: number = 1;\n\t\n @IsArray()\n @Type(() => Number)\n @IsNumber({},{ each: true })\n @IsOptional()\n @Expose({ name: \"reference_vector\" })\n /** A n optional list of 3 (x, y, z) values that describe a Vector3D relating the model to an original source coordinate system. Setting a value here is useful if the model has been moved from its original location and there may be future operations of merging geometry from the original source system. */\n referenceVector?: number[];\n\t\n\n constructor() {\n super();\n this.type = \"Model\";\n this.version = \"0.0.0\";\n this.units = Units.Meters;\n this.tolerance = 0.01;\n this.angleTolerance = 1;\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(Model, _data);\n this.properties = obj.properties;\n this.type = obj.type ?? \"Model\";\n this.version = obj.version ?? \"0.0.0\";\n this.buildings = obj.buildings;\n this.contextShades = obj.contextShades;\n this.units = obj.units ?? Units.Meters;\n this.tolerance = obj.tolerance ?? 0.01;\n this.angleTolerance = obj.angleTolerance ?? 1;\n this.referenceVector = obj.referenceVector;\n this.identifier = obj.identifier;\n this.displayName = obj.displayName;\n this.userData = obj.userData;\n }\n }\n\n\n static override fromJS(data: any): Model {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Model();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type ?? \"Model\";\n data[\"version\"] = this.version ?? \"0.0.0\";\n data[\"buildings\"] = this.buildings;\n data[\"context_shades\"] = this.contextShades;\n data[\"units\"] = this.units ?? Units.Meters;\n data[\"tolerance\"] = this.tolerance ?? 0.01;\n data[\"angle_tolerance\"] = this.angleTolerance ?? 1;\n data[\"reference_vector\"] = this.referenceVector;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ModelComparisonProperties } from \"./ModelComparisonProperties\";\nimport { ModelDoe2Properties } from \"./ModelDoe2Properties\";\nimport { ModelEnergyProperties } from \"./ModelEnergyProperties\";\nimport { ModelRadianceProperties } from \"./ModelRadianceProperties\";\n\nexport class ModelProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelProperties\";\n\t\n @Type(() => ModelEnergyProperties)\n @IsInstance(ModelEnergyProperties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"energy\" })\n /** energy */\n energy?: ModelEnergyProperties;\n\t\n @Type(() => ModelRadianceProperties)\n @IsInstance(ModelRadianceProperties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"radiance\" })\n /** radiance */\n radiance?: ModelRadianceProperties;\n\t\n @Type(() => ModelDoe2Properties)\n @IsInstance(ModelDoe2Properties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"doe2\" })\n /** doe2 */\n doe2?: ModelDoe2Properties;\n\t\n @Type(() => ModelComparisonProperties)\n @IsInstance(ModelComparisonProperties)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"comparison\" })\n /** comparison */\n comparison?: ModelComparisonProperties;\n\t\n\n constructor() {\n super();\n this.type = \"ModelProperties\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelProperties, _data);\n this.type = obj.type ?? \"ModelProperties\";\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n this.doe2 = obj.doe2;\n this.comparison = obj.comparison;\n }\n }\n\n\n static override fromJS(data: any): ModelProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelProperties\";\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data[\"doe2\"] = this.doe2;\n data[\"comparison\"] = this.comparison;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class ModelComparisonProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelComparisonProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelComparisonProperties\";\n\t\n\n constructor() {\n super();\n this.type = \"ModelComparisonProperties\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelComparisonProperties, _data);\n this.type = obj.type ?? \"ModelComparisonProperties\";\n }\n }\n\n\n static override fromJS(data: any): ModelComparisonProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelComparisonProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelComparisonProperties\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\nexport class ModelDoe2Properties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelDoe2Properties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelDoe2Properties\";\n\t\n\n constructor() {\n super();\n this.type = \"ModelDoe2Properties\";\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelDoe2Properties, _data);\n this.type = obj.type ?? \"ModelDoe2Properties\";\n }\n }\n\n\n static override fromJS(data: any): ModelDoe2Properties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelDoe2Properties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelDoe2Properties\";\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { AirBoundaryConstruction } from \"honeybee-schema\";\nimport { AirBoundaryConstructionAbridged } from \"honeybee-schema\";\nimport { Baseboard } from \"honeybee-schema\";\nimport { ConstructionSet } from \"honeybee-schema\";\nimport { ConstructionSetAbridged } from \"honeybee-schema\";\nimport { DetailedHVAC } from \"honeybee-schema\";\nimport { EnergyMaterial } from \"honeybee-schema\";\nimport { EnergyMaterialNoMass } from \"honeybee-schema\";\nimport { EnergyMaterialVegetation } from \"honeybee-schema\";\nimport { EnergyWindowFrame } from \"honeybee-schema\";\nimport { EnergyWindowMaterialBlind } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGas } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGasCustom } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGasMixture } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGlazing } from \"honeybee-schema\";\nimport { EnergyWindowMaterialShade } from \"honeybee-schema\";\nimport { EnergyWindowMaterialSimpleGlazSys } from \"honeybee-schema\";\nimport { EvaporativeCooler } from \"honeybee-schema\";\nimport { FCU } from \"honeybee-schema\";\nimport { FCUwithDOASAbridged } from \"honeybee-schema\";\nimport { ForcedAirFurnace } from \"honeybee-schema\";\nimport { GasUnitHeater } from \"honeybee-schema\";\nimport { GlobalConstructionSet } from \"honeybee-schema\";\nimport { IdealAirSystemAbridged } from \"honeybee-schema\";\nimport { OpaqueConstruction } from \"honeybee-schema\";\nimport { OpaqueConstructionAbridged } from \"honeybee-schema\";\nimport { ProgramType } from \"honeybee-schema\";\nimport { ProgramTypeAbridged } from \"honeybee-schema\";\nimport { PSZ } from \"honeybee-schema\";\nimport { PTAC } from \"honeybee-schema\";\nimport { PVAV } from \"honeybee-schema\";\nimport { Radiant } from \"honeybee-schema\";\nimport { RadiantwithDOASAbridged } from \"honeybee-schema\";\nimport { Residential } from \"honeybee-schema\";\nimport { ScheduleFixedInterval } from \"honeybee-schema\";\nimport { ScheduleFixedIntervalAbridged } from \"honeybee-schema\";\nimport { ScheduleRuleset } from \"honeybee-schema\";\nimport { ScheduleRulesetAbridged } from \"honeybee-schema\";\nimport { ScheduleTypeLimit } from \"honeybee-schema\";\nimport { ShadeConstruction } from \"honeybee-schema\";\nimport { SHWSystem } from \"honeybee-schema\";\nimport { VAV } from \"honeybee-schema\";\nimport { VRF } from \"honeybee-schema\";\nimport { VRFwithDOASAbridged } from \"honeybee-schema\";\nimport { WindowAC } from \"honeybee-schema\";\nimport { WindowConstruction } from \"honeybee-schema\";\nimport { WindowConstructionAbridged } from \"honeybee-schema\";\nimport { WSHP } from \"honeybee-schema\";\nimport { WSHPwithDOASAbridged } from \"honeybee-schema\";\n\nexport class ModelEnergyProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelEnergyProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelEnergyProperties\";\n\t\n @Type(() => GlobalConstructionSet)\n @IsInstance(GlobalConstructionSet)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"global_construction_set\" })\n /** Global Energy construction set. */\n globalConstructionSet: GlobalConstructionSet = GlobalConstructionSet.fromJS({\n \"type\": \"GlobalConstructionSet\",\n \"materials\": [\n {\n \"conductivity\": 0.16,\n \"density\": 1120.0,\n \"display_name\": null,\n \"identifier\": \"Generic Roof Membrane\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 1460.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.01,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.06,\n \"density\": 368.0,\n \"display_name\": null,\n \"identifier\": \"Generic Acoustic Tile\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.2,\n \"specific_heat\": 590.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.02,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.2\n },\n {\n \"conductivity\": 0.15,\n \"density\": 608.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Wood\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1630.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0254,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 1.95,\n \"density\": 2240.0,\n \"display_name\": null,\n \"identifier\": \"Generic HW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 900.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.2,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"display_name\": null,\n \"gas_type\": \"Air\",\n \"identifier\": \"Generic Window Air Gap\",\n \"thickness\": 0.0127,\n \"type\": \"EnergyWindowMaterialGas\",\n \"user_data\": null\n },\n {\n \"conductivity\": 0.16,\n \"density\": 800.0,\n \"display_name\": null,\n \"identifier\": \"Generic Gypsum Board\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1090.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0127,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.667,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Wall Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.556,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Ceiling Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.9,\n \"density\": 1920.0,\n \"display_name\": null,\n \"identifier\": \"Generic Brick\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 790.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 50mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.05,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.047,\n \"identifier\": \"Generic Low-e Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.36,\n \"solar_reflectance_back\": 0.36,\n \"solar_transmittance\": 0.45,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.21,\n \"visible_reflectance_back\": 0.21,\n \"visible_transmittance\": 0.71\n },\n {\n \"conductivity\": 45.0,\n \"density\": 7690.0,\n \"display_name\": null,\n \"identifier\": \"Generic Painted Metal\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 410.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0015,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.53,\n \"density\": 1280.0,\n \"display_name\": null,\n \"identifier\": \"Generic LW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 840.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.025,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.84,\n \"identifier\": \"Generic Clear Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.07,\n \"solar_reflectance_back\": 0.07,\n \"solar_transmittance\": 0.77,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.08,\n \"visible_reflectance_back\": 0.08,\n \"visible_transmittance\": 0.88\n }\n ],\n \"constructions\": [\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Door\",\n \"materials\": [\n \"Generic 25mm Wood\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Single Pane\",\n \"materials\": [\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Shade\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.35,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.35\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Context\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.2,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.2\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Ceiling\",\n \"materials\": [\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Wall\",\n \"materials\": [\n \"Generic Gypsum Board\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exposed Floor\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic Ceiling Air Gap\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Floor\",\n \"materials\": [\n \"Generic Acoustic Tile\",\n \"Generic Ceiling Air Gap\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Ground Slab\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Roof\",\n \"materials\": [\n \"Generic Roof Membrane\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Wall\",\n \"materials\": [\n \"Generic Brick\",\n \"Generic LW Concrete\",\n \"Generic 50mm Insulation\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Wall\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"air_mixing_per_area\": 0.1,\n \"air_mixing_schedule\": \"Always On\",\n \"display_name\": null,\n \"identifier\": \"Generic Air Boundary\",\n \"type\": \"AirBoundaryConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Roof\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Double Pane\",\n \"materials\": [\n \"Generic Low-e Glass\",\n \"Generic Window Air Gap\",\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Door\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic 25mm Insulation\",\n \"Generic Painted Metal\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n }\n ],\n \"wall_set\": {\n \"exterior_construction\": \"Generic Exterior Wall\",\n \"ground_construction\": \"Generic Underground Wall\",\n \"interior_construction\": \"Generic Interior Wall\",\n \"type\": \"WallConstructionSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_construction\": \"Generic Exposed Floor\",\n \"ground_construction\": \"Generic Ground Slab\",\n \"interior_construction\": \"Generic Interior Floor\",\n \"type\": \"FloorConstructionSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_construction\": \"Generic Roof\",\n \"ground_construction\": \"Generic Underground Roof\",\n \"interior_construction\": \"Generic Interior Ceiling\",\n \"type\": \"RoofCeilingConstructionSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_construction\": \"Generic Single Pane\",\n \"operable_construction\": \"Generic Double Pane\",\n \"skylight_construction\": \"Generic Double Pane\",\n \"type\": \"ApertureConstructionSetAbridged\",\n \"window_construction\": \"Generic Double Pane\"\n },\n \"door_set\": {\n \"exterior_construction\": \"Generic Exterior Door\",\n \"exterior_glass_construction\": \"Generic Double Pane\",\n \"interior_construction\": \"Generic Interior Door\",\n \"interior_glass_construction\": \"Generic Single Pane\",\n \"overhead_construction\": \"Generic Exterior Door\",\n \"type\": \"DoorConstructionSetAbridged\"\n },\n \"shade_construction\": \"Generic Shade\",\n \"context_construction\": \"Generic Context\",\n \"air_boundary_construction\": \"Generic Air Boundary\"\n});\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"construction_sets\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ConstructionSetAbridged') return ConstructionSetAbridged.fromJS(item);\n else if (item?.type === 'ConstructionSet') return ConstructionSet.fromJS(item);\n else return item;\n }))\n /** List of all ConstructionSets in the Model. */\n constructionSets?: (ConstructionSetAbridged | ConstructionSet)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"constructions\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'OpaqueConstructionAbridged') return OpaqueConstructionAbridged.fromJS(item);\n else if (item?.type === 'WindowConstructionAbridged') return WindowConstructionAbridged.fromJS(item);\n else if (item?.type === 'ShadeConstruction') return ShadeConstruction.fromJS(item);\n else if (item?.type === 'AirBoundaryConstructionAbridged') return AirBoundaryConstructionAbridged.fromJS(item);\n else if (item?.type === 'OpaqueConstruction') return OpaqueConstruction.fromJS(item);\n else if (item?.type === 'WindowConstruction') return WindowConstruction.fromJS(item);\n else if (item?.type === 'AirBoundaryConstruction') return AirBoundaryConstruction.fromJS(item);\n else return item;\n }))\n /** A list of all unique constructions in the model. This includes constructions across all the Model construction_sets. */\n constructions?: (OpaqueConstructionAbridged | WindowConstructionAbridged | ShadeConstruction | AirBoundaryConstructionAbridged | OpaqueConstruction | WindowConstruction | AirBoundaryConstruction)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"materials\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'EnergyMaterial') return EnergyMaterial.fromJS(item);\n else if (item?.type === 'EnergyMaterialNoMass') return EnergyMaterialNoMass.fromJS(item);\n else if (item?.type === 'EnergyMaterialVegetation') return EnergyMaterialVegetation.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGas') return EnergyWindowMaterialGas.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGasCustom') return EnergyWindowMaterialGasCustom.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGasMixture') return EnergyWindowMaterialGasMixture.fromJS(item);\n else if (item?.type === 'EnergyWindowFrame') return EnergyWindowFrame.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialSimpleGlazSys') return EnergyWindowMaterialSimpleGlazSys.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGlazing') return EnergyWindowMaterialGlazing.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialBlind') return EnergyWindowMaterialBlind.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialShade') return EnergyWindowMaterialShade.fromJS(item);\n else return item;\n }))\n /** A list of all unique materials in the model. This includes materials needed to make the Model constructions. */\n materials?: (EnergyMaterial | EnergyMaterialNoMass | EnergyMaterialVegetation | EnergyWindowMaterialGas | EnergyWindowMaterialGasCustom | EnergyWindowMaterialGasMixture | EnergyWindowFrame | EnergyWindowMaterialSimpleGlazSys | EnergyWindowMaterialGlazing | EnergyWindowMaterialBlind | EnergyWindowMaterialShade)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"hvacs\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'IdealAirSystemAbridged') return IdealAirSystemAbridged.fromJS(item);\n else if (item?.type === 'VAV') return VAV.fromJS(item);\n else if (item?.type === 'PVAV') return PVAV.fromJS(item);\n else if (item?.type === 'PSZ') return PSZ.fromJS(item);\n else if (item?.type === 'PTAC') return PTAC.fromJS(item);\n else if (item?.type === 'ForcedAirFurnace') return ForcedAirFurnace.fromJS(item);\n else if (item?.type === 'FCUwithDOASAbridged') return FCUwithDOASAbridged.fromJS(item);\n else if (item?.type === 'WSHPwithDOASAbridged') return WSHPwithDOASAbridged.fromJS(item);\n else if (item?.type === 'VRFwithDOASAbridged') return VRFwithDOASAbridged.fromJS(item);\n else if (item?.type === 'RadiantwithDOASAbridged') return RadiantwithDOASAbridged.fromJS(item);\n else if (item?.type === 'FCU') return FCU.fromJS(item);\n else if (item?.type === 'WSHP') return WSHP.fromJS(item);\n else if (item?.type === 'VRF') return VRF.fromJS(item);\n else if (item?.type === 'Baseboard') return Baseboard.fromJS(item);\n else if (item?.type === 'EvaporativeCooler') return EvaporativeCooler.fromJS(item);\n else if (item?.type === 'Residential') return Residential.fromJS(item);\n else if (item?.type === 'WindowAC') return WindowAC.fromJS(item);\n else if (item?.type === 'GasUnitHeater') return GasUnitHeater.fromJS(item);\n else if (item?.type === 'Radiant') return Radiant.fromJS(item);\n else if (item?.type === 'DetailedHVAC') return DetailedHVAC.fromJS(item);\n else return item;\n }))\n /** List of all HVAC systems in the Model. */\n hvacs?: (IdealAirSystemAbridged | VAV | PVAV | PSZ | PTAC | ForcedAirFurnace | FCUwithDOASAbridged | WSHPwithDOASAbridged | VRFwithDOASAbridged | RadiantwithDOASAbridged | FCU | WSHP | VRF | Baseboard | EvaporativeCooler | Residential | WindowAC | GasUnitHeater | Radiant | DetailedHVAC)[];\n\t\n @IsArray()\n @Type(() => SHWSystem)\n @IsInstance(SHWSystem, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"shws\" })\n /** List of all Service Hot Water (SHW) systems in the Model. */\n shws?: SHWSystem[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"program_types\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ProgramTypeAbridged') return ProgramTypeAbridged.fromJS(item);\n else if (item?.type === 'ProgramType') return ProgramType.fromJS(item);\n else return item;\n }))\n /** List of all ProgramTypes in the Model. */\n programTypes?: (ProgramTypeAbridged | ProgramType)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"schedules\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ScheduleRulesetAbridged') return ScheduleRulesetAbridged.fromJS(item);\n else if (item?.type === 'ScheduleFixedIntervalAbridged') return ScheduleFixedIntervalAbridged.fromJS(item);\n else if (item?.type === 'ScheduleRuleset') return ScheduleRuleset.fromJS(item);\n else if (item?.type === 'ScheduleFixedInterval') return ScheduleFixedInterval.fromJS(item);\n else return item;\n }))\n /** A list of all unique schedules in the model. This includes schedules across all HVAC systems, ProgramTypes and ContextShades. */\n schedules?: (ScheduleRulesetAbridged | ScheduleFixedIntervalAbridged | ScheduleRuleset | ScheduleFixedInterval)[];\n\t\n @IsArray()\n @Type(() => ScheduleTypeLimit)\n @IsInstance(ScheduleTypeLimit, { each: true })\n @ValidateNested({ each: true })\n @IsOptional()\n @Expose({ name: \"schedule_type_limits\" })\n /** A list of all unique ScheduleTypeLimits in the model. This all ScheduleTypeLimits needed to make the Model schedules. */\n scheduleTypeLimits?: ScheduleTypeLimit[];\n\t\n\n constructor() {\n super();\n this.type = \"ModelEnergyProperties\";\n this.globalConstructionSet = GlobalConstructionSet.fromJS({\n \"type\": \"GlobalConstructionSet\",\n \"materials\": [\n {\n \"conductivity\": 0.16,\n \"density\": 1120.0,\n \"display_name\": null,\n \"identifier\": \"Generic Roof Membrane\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 1460.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.01,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.06,\n \"density\": 368.0,\n \"display_name\": null,\n \"identifier\": \"Generic Acoustic Tile\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.2,\n \"specific_heat\": 590.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.02,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.2\n },\n {\n \"conductivity\": 0.15,\n \"density\": 608.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Wood\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1630.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0254,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 1.95,\n \"density\": 2240.0,\n \"display_name\": null,\n \"identifier\": \"Generic HW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 900.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.2,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"display_name\": null,\n \"gas_type\": \"Air\",\n \"identifier\": \"Generic Window Air Gap\",\n \"thickness\": 0.0127,\n \"type\": \"EnergyWindowMaterialGas\",\n \"user_data\": null\n },\n {\n \"conductivity\": 0.16,\n \"density\": 800.0,\n \"display_name\": null,\n \"identifier\": \"Generic Gypsum Board\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1090.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0127,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.667,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Wall Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.556,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Ceiling Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.9,\n \"density\": 1920.0,\n \"display_name\": null,\n \"identifier\": \"Generic Brick\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 790.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 50mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.05,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.047,\n \"identifier\": \"Generic Low-e Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.36,\n \"solar_reflectance_back\": 0.36,\n \"solar_transmittance\": 0.45,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.21,\n \"visible_reflectance_back\": 0.21,\n \"visible_transmittance\": 0.71\n },\n {\n \"conductivity\": 45.0,\n \"density\": 7690.0,\n \"display_name\": null,\n \"identifier\": \"Generic Painted Metal\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 410.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0015,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.53,\n \"density\": 1280.0,\n \"display_name\": null,\n \"identifier\": \"Generic LW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 840.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.025,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.84,\n \"identifier\": \"Generic Clear Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.07,\n \"solar_reflectance_back\": 0.07,\n \"solar_transmittance\": 0.77,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.08,\n \"visible_reflectance_back\": 0.08,\n \"visible_transmittance\": 0.88\n }\n ],\n \"constructions\": [\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Door\",\n \"materials\": [\n \"Generic 25mm Wood\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Single Pane\",\n \"materials\": [\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Shade\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.35,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.35\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Context\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.2,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.2\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Ceiling\",\n \"materials\": [\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Wall\",\n \"materials\": [\n \"Generic Gypsum Board\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exposed Floor\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic Ceiling Air Gap\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Floor\",\n \"materials\": [\n \"Generic Acoustic Tile\",\n \"Generic Ceiling Air Gap\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Ground Slab\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Roof\",\n \"materials\": [\n \"Generic Roof Membrane\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Wall\",\n \"materials\": [\n \"Generic Brick\",\n \"Generic LW Concrete\",\n \"Generic 50mm Insulation\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Wall\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"air_mixing_per_area\": 0.1,\n \"air_mixing_schedule\": \"Always On\",\n \"display_name\": null,\n \"identifier\": \"Generic Air Boundary\",\n \"type\": \"AirBoundaryConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Roof\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Double Pane\",\n \"materials\": [\n \"Generic Low-e Glass\",\n \"Generic Window Air Gap\",\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Door\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic 25mm Insulation\",\n \"Generic Painted Metal\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n }\n ],\n \"wall_set\": {\n \"exterior_construction\": \"Generic Exterior Wall\",\n \"ground_construction\": \"Generic Underground Wall\",\n \"interior_construction\": \"Generic Interior Wall\",\n \"type\": \"WallConstructionSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_construction\": \"Generic Exposed Floor\",\n \"ground_construction\": \"Generic Ground Slab\",\n \"interior_construction\": \"Generic Interior Floor\",\n \"type\": \"FloorConstructionSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_construction\": \"Generic Roof\",\n \"ground_construction\": \"Generic Underground Roof\",\n \"interior_construction\": \"Generic Interior Ceiling\",\n \"type\": \"RoofCeilingConstructionSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_construction\": \"Generic Single Pane\",\n \"operable_construction\": \"Generic Double Pane\",\n \"skylight_construction\": \"Generic Double Pane\",\n \"type\": \"ApertureConstructionSetAbridged\",\n \"window_construction\": \"Generic Double Pane\"\n },\n \"door_set\": {\n \"exterior_construction\": \"Generic Exterior Door\",\n \"exterior_glass_construction\": \"Generic Double Pane\",\n \"interior_construction\": \"Generic Interior Door\",\n \"interior_glass_construction\": \"Generic Single Pane\",\n \"overhead_construction\": \"Generic Exterior Door\",\n \"type\": \"DoorConstructionSetAbridged\"\n },\n \"shade_construction\": \"Generic Shade\",\n \"context_construction\": \"Generic Context\",\n \"air_boundary_construction\": \"Generic Air Boundary\"\n});\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelEnergyProperties, _data);\n this.type = obj.type ?? \"ModelEnergyProperties\";\n this.globalConstructionSet = obj.globalConstructionSet ?? GlobalConstructionSet.fromJS({\n \"type\": \"GlobalConstructionSet\",\n \"materials\": [\n {\n \"conductivity\": 0.16,\n \"density\": 1120.0,\n \"display_name\": null,\n \"identifier\": \"Generic Roof Membrane\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 1460.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.01,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.06,\n \"density\": 368.0,\n \"display_name\": null,\n \"identifier\": \"Generic Acoustic Tile\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.2,\n \"specific_heat\": 590.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.02,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.2\n },\n {\n \"conductivity\": 0.15,\n \"density\": 608.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Wood\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1630.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0254,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 1.95,\n \"density\": 2240.0,\n \"display_name\": null,\n \"identifier\": \"Generic HW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 900.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.2,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"display_name\": null,\n \"gas_type\": \"Air\",\n \"identifier\": \"Generic Window Air Gap\",\n \"thickness\": 0.0127,\n \"type\": \"EnergyWindowMaterialGas\",\n \"user_data\": null\n },\n {\n \"conductivity\": 0.16,\n \"density\": 800.0,\n \"display_name\": null,\n \"identifier\": \"Generic Gypsum Board\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1090.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0127,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.667,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Wall Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.556,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Ceiling Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.9,\n \"density\": 1920.0,\n \"display_name\": null,\n \"identifier\": \"Generic Brick\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 790.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 50mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.05,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.047,\n \"identifier\": \"Generic Low-e Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.36,\n \"solar_reflectance_back\": 0.36,\n \"solar_transmittance\": 0.45,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.21,\n \"visible_reflectance_back\": 0.21,\n \"visible_transmittance\": 0.71\n },\n {\n \"conductivity\": 45.0,\n \"density\": 7690.0,\n \"display_name\": null,\n \"identifier\": \"Generic Painted Metal\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 410.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0015,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.53,\n \"density\": 1280.0,\n \"display_name\": null,\n \"identifier\": \"Generic LW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 840.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.025,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.84,\n \"identifier\": \"Generic Clear Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.07,\n \"solar_reflectance_back\": 0.07,\n \"solar_transmittance\": 0.77,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.08,\n \"visible_reflectance_back\": 0.08,\n \"visible_transmittance\": 0.88\n }\n ],\n \"constructions\": [\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Door\",\n \"materials\": [\n \"Generic 25mm Wood\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Single Pane\",\n \"materials\": [\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Shade\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.35,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.35\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Context\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.2,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.2\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Ceiling\",\n \"materials\": [\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Wall\",\n \"materials\": [\n \"Generic Gypsum Board\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exposed Floor\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic Ceiling Air Gap\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Floor\",\n \"materials\": [\n \"Generic Acoustic Tile\",\n \"Generic Ceiling Air Gap\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Ground Slab\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Roof\",\n \"materials\": [\n \"Generic Roof Membrane\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Wall\",\n \"materials\": [\n \"Generic Brick\",\n \"Generic LW Concrete\",\n \"Generic 50mm Insulation\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Wall\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"air_mixing_per_area\": 0.1,\n \"air_mixing_schedule\": \"Always On\",\n \"display_name\": null,\n \"identifier\": \"Generic Air Boundary\",\n \"type\": \"AirBoundaryConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Roof\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Double Pane\",\n \"materials\": [\n \"Generic Low-e Glass\",\n \"Generic Window Air Gap\",\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Door\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic 25mm Insulation\",\n \"Generic Painted Metal\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n }\n ],\n \"wall_set\": {\n \"exterior_construction\": \"Generic Exterior Wall\",\n \"ground_construction\": \"Generic Underground Wall\",\n \"interior_construction\": \"Generic Interior Wall\",\n \"type\": \"WallConstructionSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_construction\": \"Generic Exposed Floor\",\n \"ground_construction\": \"Generic Ground Slab\",\n \"interior_construction\": \"Generic Interior Floor\",\n \"type\": \"FloorConstructionSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_construction\": \"Generic Roof\",\n \"ground_construction\": \"Generic Underground Roof\",\n \"interior_construction\": \"Generic Interior Ceiling\",\n \"type\": \"RoofCeilingConstructionSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_construction\": \"Generic Single Pane\",\n \"operable_construction\": \"Generic Double Pane\",\n \"skylight_construction\": \"Generic Double Pane\",\n \"type\": \"ApertureConstructionSetAbridged\",\n \"window_construction\": \"Generic Double Pane\"\n },\n \"door_set\": {\n \"exterior_construction\": \"Generic Exterior Door\",\n \"exterior_glass_construction\": \"Generic Double Pane\",\n \"interior_construction\": \"Generic Interior Door\",\n \"interior_glass_construction\": \"Generic Single Pane\",\n \"overhead_construction\": \"Generic Exterior Door\",\n \"type\": \"DoorConstructionSetAbridged\"\n },\n \"shade_construction\": \"Generic Shade\",\n \"context_construction\": \"Generic Context\",\n \"air_boundary_construction\": \"Generic Air Boundary\"\n});\n this.constructionSets = obj.constructionSets;\n this.constructions = obj.constructions;\n this.materials = obj.materials;\n this.hvacs = obj.hvacs;\n this.shws = obj.shws;\n this.programTypes = obj.programTypes;\n this.schedules = obj.schedules;\n this.scheduleTypeLimits = obj.scheduleTypeLimits;\n }\n }\n\n\n static override fromJS(data: any): ModelEnergyProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelEnergyProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelEnergyProperties\";\n data[\"global_construction_set\"] = this.globalConstructionSet ?? GlobalConstructionSet.fromJS({\n \"type\": \"GlobalConstructionSet\",\n \"materials\": [\n {\n \"conductivity\": 0.16,\n \"density\": 1120.0,\n \"display_name\": null,\n \"identifier\": \"Generic Roof Membrane\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 1460.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.01,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.06,\n \"density\": 368.0,\n \"display_name\": null,\n \"identifier\": \"Generic Acoustic Tile\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.2,\n \"specific_heat\": 590.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.02,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.2\n },\n {\n \"conductivity\": 0.15,\n \"density\": 608.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Wood\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1630.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0254,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 1.95,\n \"density\": 2240.0,\n \"display_name\": null,\n \"identifier\": \"Generic HW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 900.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.2,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"display_name\": null,\n \"gas_type\": \"Air\",\n \"identifier\": \"Generic Window Air Gap\",\n \"thickness\": 0.0127,\n \"type\": \"EnergyWindowMaterialGas\",\n \"user_data\": null\n },\n {\n \"conductivity\": 0.16,\n \"density\": 800.0,\n \"display_name\": null,\n \"identifier\": \"Generic Gypsum Board\",\n \"roughness\": \"MediumSmooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 1090.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0127,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.667,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Wall Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.556,\n \"density\": 1.28,\n \"display_name\": null,\n \"identifier\": \"Generic Ceiling Air Gap\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 0.9,\n \"density\": 1920.0,\n \"display_name\": null,\n \"identifier\": \"Generic Brick\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.65,\n \"specific_heat\": 790.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.65\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 50mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.05,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.047,\n \"identifier\": \"Generic Low-e Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.36,\n \"solar_reflectance_back\": 0.36,\n \"solar_transmittance\": 0.45,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.21,\n \"visible_reflectance_back\": 0.21,\n \"visible_transmittance\": 0.71\n },\n {\n \"conductivity\": 45.0,\n \"density\": 7690.0,\n \"display_name\": null,\n \"identifier\": \"Generic Painted Metal\",\n \"roughness\": \"Smooth\",\n \"solar_absorptance\": 0.5,\n \"specific_heat\": 410.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.0015,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.5\n },\n {\n \"conductivity\": 0.53,\n \"density\": 1280.0,\n \"display_name\": null,\n \"identifier\": \"Generic LW Concrete\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.8,\n \"specific_heat\": 840.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.1,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.8\n },\n {\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"display_name\": null,\n \"identifier\": \"Generic 25mm Insulation\",\n \"roughness\": \"MediumRough\",\n \"solar_absorptance\": 0.7,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"thickness\": 0.025,\n \"type\": \"EnergyMaterial\",\n \"user_data\": null,\n \"visible_absorptance\": 0.7\n },\n {\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"display_name\": null,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.84,\n \"identifier\": \"Generic Clear Glass\",\n \"infrared_transmittance\": 0.0,\n \"solar_diffusing\": false,\n \"solar_reflectance\": 0.07,\n \"solar_reflectance_back\": 0.07,\n \"solar_transmittance\": 0.77,\n \"thickness\": 0.006,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"user_data\": null,\n \"visible_reflectance\": 0.08,\n \"visible_reflectance_back\": 0.08,\n \"visible_transmittance\": 0.88\n }\n ],\n \"constructions\": [\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Door\",\n \"materials\": [\n \"Generic 25mm Wood\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Single Pane\",\n \"materials\": [\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Shade\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.35,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.35\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Context\",\n \"is_specular\": false,\n \"solar_reflectance\": 0.2,\n \"type\": \"ShadeConstruction\",\n \"user_data\": null,\n \"visible_reflectance\": 0.2\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Ceiling\",\n \"materials\": [\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Wall\",\n \"materials\": [\n \"Generic Gypsum Board\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exposed Floor\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic Ceiling Air Gap\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Interior Floor\",\n \"materials\": [\n \"Generic Acoustic Tile\",\n \"Generic Ceiling Air Gap\",\n \"Generic LW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Ground Slab\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Roof\",\n \"materials\": [\n \"Generic Roof Membrane\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Wall\",\n \"materials\": [\n \"Generic Brick\",\n \"Generic LW Concrete\",\n \"Generic 50mm Insulation\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Wall\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"air_mixing_per_area\": 0.1,\n \"air_mixing_schedule\": \"Always On\",\n \"display_name\": null,\n \"identifier\": \"Generic Air Boundary\",\n \"type\": \"AirBoundaryConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Underground Roof\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"frame\": null,\n \"identifier\": \"Generic Double Pane\",\n \"materials\": [\n \"Generic Low-e Glass\",\n \"Generic Window Air Gap\",\n \"Generic Clear Glass\"\n ],\n \"type\": \"WindowConstructionAbridged\",\n \"user_data\": null\n },\n {\n \"display_name\": null,\n \"identifier\": \"Generic Exterior Door\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic 25mm Insulation\",\n \"Generic Painted Metal\"\n ],\n \"type\": \"OpaqueConstructionAbridged\",\n \"user_data\": null\n }\n ],\n \"wall_set\": {\n \"exterior_construction\": \"Generic Exterior Wall\",\n \"ground_construction\": \"Generic Underground Wall\",\n \"interior_construction\": \"Generic Interior Wall\",\n \"type\": \"WallConstructionSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_construction\": \"Generic Exposed Floor\",\n \"ground_construction\": \"Generic Ground Slab\",\n \"interior_construction\": \"Generic Interior Floor\",\n \"type\": \"FloorConstructionSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_construction\": \"Generic Roof\",\n \"ground_construction\": \"Generic Underground Roof\",\n \"interior_construction\": \"Generic Interior Ceiling\",\n \"type\": \"RoofCeilingConstructionSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_construction\": \"Generic Single Pane\",\n \"operable_construction\": \"Generic Double Pane\",\n \"skylight_construction\": \"Generic Double Pane\",\n \"type\": \"ApertureConstructionSetAbridged\",\n \"window_construction\": \"Generic Double Pane\"\n },\n \"door_set\": {\n \"exterior_construction\": \"Generic Exterior Door\",\n \"exterior_glass_construction\": \"Generic Double Pane\",\n \"interior_construction\": \"Generic Interior Door\",\n \"interior_glass_construction\": \"Generic Single Pane\",\n \"overhead_construction\": \"Generic Exterior Door\",\n \"type\": \"DoorConstructionSetAbridged\"\n },\n \"shade_construction\": \"Generic Shade\",\n \"context_construction\": \"Generic Context\",\n \"air_boundary_construction\": \"Generic Air Boundary\"\n});\n data[\"construction_sets\"] = this.constructionSets;\n data[\"constructions\"] = this.constructions;\n data[\"materials\"] = this.materials;\n data[\"hvacs\"] = this.hvacs;\n data[\"shws\"] = this.shws;\n data[\"program_types\"] = this.programTypes;\n data[\"schedules\"] = this.schedules;\n data[\"schedule_type_limits\"] = this.scheduleTypeLimits;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","import { IsString, IsOptional, Equals, IsInstance, ValidateNested, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, instanceToPlain, Expose, Transform } from 'class-transformer';\nimport { deepTransform } from '../deepTransform';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { BSDF } from \"honeybee-schema\";\nimport { Glass } from \"honeybee-schema\";\nimport { GlobalModifierSet } from \"honeybee-schema\";\nimport { Glow } from \"honeybee-schema\";\nimport { Light } from \"honeybee-schema\";\nimport { Metal } from \"honeybee-schema\";\nimport { Mirror } from \"honeybee-schema\";\nimport { ModifierSet } from \"honeybee-schema\";\nimport { ModifierSetAbridged } from \"honeybee-schema\";\nimport { Plastic } from \"honeybee-schema\";\nimport { Trans } from \"honeybee-schema\";\nimport { Void } from \"honeybee-schema\";\n\nexport class ModelRadianceProperties extends _OpenAPIGenBaseModel {\n @Type(() => String)\n @IsString()\n @IsOptional()\n @Equals(\"ModelRadianceProperties\")\n @Expose({ name: \"type\" })\n /** type */\n type: string = \"ModelRadianceProperties\";\n\t\n @Type(() => GlobalModifierSet)\n @IsInstance(GlobalModifierSet)\n @ValidateNested()\n @IsOptional()\n @Expose({ name: \"global_modifier_set\" })\n /** Global Radiance modifier set. */\n globalModifierSet: GlobalModifierSet = GlobalModifierSet.fromJS({\n \"type\": \"GlobalModifierSet\",\n \"modifiers\": [\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_floor_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_wall_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.8,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.8,\n \"identifier\": \"generic_ceiling_0.80\",\n \"modifier\": null,\n \"r_reflectance\": 0.8,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_opaque_door_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_interior_shade_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.35,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.35,\n \"identifier\": \"generic_exterior_shade_0.35\",\n \"modifier\": null,\n \"r_reflectance\": 0.35,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_context_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_transmissivity\": 0.9584154328610596,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.9584154328610596,\n \"identifier\": \"generic_interior_window_vis_0.88\",\n \"modifier\": null,\n \"r_transmissivity\": 0.9584154328610596,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_transmissivity\": 0.6975761815384331,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.6975761815384331,\n \"identifier\": \"generic_exterior_window_vis_0.64\",\n \"modifier\": null,\n \"r_transmissivity\": 0.6975761815384331,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_reflectance\": 1.0,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 1.0,\n \"identifier\": \"air_boundary\",\n \"modifier\": null,\n \"r_reflectance\": 1.0,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"transmitted_diff\": 1.0,\n \"transmitted_spec\": 1.0,\n \"type\": \"Trans\"\n }\n ],\n \"wall_set\": {\n \"exterior_modifier\": \"generic_wall_0.50\",\n \"interior_modifier\": \"generic_wall_0.50\",\n \"type\": \"WallModifierSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_modifier\": \"generic_floor_0.20\",\n \"interior_modifier\": \"generic_floor_0.20\",\n \"type\": \"FloorModifierSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_modifier\": \"generic_ceiling_0.80\",\n \"interior_modifier\": \"generic_ceiling_0.80\",\n \"type\": \"RoofCeilingModifierSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_modifier\": \"generic_interior_window_vis_0.88\",\n \"operable_modifier\": \"generic_exterior_window_vis_0.64\",\n \"skylight_modifier\": \"generic_exterior_window_vis_0.64\",\n \"type\": \"ApertureModifierSetAbridged\",\n \"window_modifier\": \"generic_exterior_window_vis_0.64\"\n },\n \"door_set\": {\n \"exterior_glass_modifier\": \"generic_exterior_window_vis_0.64\",\n \"exterior_modifier\": \"generic_opaque_door_0.50\",\n \"interior_glass_modifier\": \"generic_interior_window_vis_0.88\",\n \"interior_modifier\": \"generic_opaque_door_0.50\",\n \"overhead_modifier\": \"generic_opaque_door_0.50\",\n \"type\": \"DoorModifierSetAbridged\"\n },\n \"shade_set\": {\n \"exterior_modifier\": \"generic_exterior_shade_0.35\",\n \"interior_modifier\": \"generic_interior_shade_0.50\",\n \"type\": \"ShadeModifierSetAbridged\"\n },\n \"air_boundary_modifier\": \"air_boundary\",\n \"context_modifier\": \"generic_context_0.20\"\n});\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"modifier_sets\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'ModifierSet') return ModifierSet.fromJS(item);\n else if (item?.type === 'ModifierSetAbridged') return ModifierSetAbridged.fromJS(item);\n else return item;\n }))\n /** List of all ModifierSets in the Model. */\n modifierSets?: (ModifierSet | ModifierSetAbridged)[];\n\t\n @IsArray()\n @IsOptional()\n @Expose({ name: \"modifiers\" })\n @Transform(({ value }) => value?.map((item: any) => {\n if (item?.type === 'Plastic') return Plastic.fromJS(item);\n else if (item?.type === 'Glass') return Glass.fromJS(item);\n else if (item?.type === 'BSDF') return BSDF.fromJS(item);\n else if (item?.type === 'Glow') return Glow.fromJS(item);\n else if (item?.type === 'Light') return Light.fromJS(item);\n else if (item?.type === 'Trans') return Trans.fromJS(item);\n else if (item?.type === 'Metal') return Metal.fromJS(item);\n else if (item?.type === 'Void') return Void.fromJS(item);\n else if (item?.type === 'Mirror') return Mirror.fromJS(item);\n else return item;\n }))\n /** A list of all unique modifiers in the model. This includes modifiers across all the Model modifier_sets. */\n modifiers?: (Plastic | Glass | BSDF | Glow | Light | Trans | Metal | Void | Mirror)[];\n\t\n\n constructor() {\n super();\n this.type = \"ModelRadianceProperties\";\n this.globalModifierSet = GlobalModifierSet.fromJS({\n \"type\": \"GlobalModifierSet\",\n \"modifiers\": [\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_floor_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_wall_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.8,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.8,\n \"identifier\": \"generic_ceiling_0.80\",\n \"modifier\": null,\n \"r_reflectance\": 0.8,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_opaque_door_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_interior_shade_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.35,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.35,\n \"identifier\": \"generic_exterior_shade_0.35\",\n \"modifier\": null,\n \"r_reflectance\": 0.35,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_context_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_transmissivity\": 0.9584154328610596,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.9584154328610596,\n \"identifier\": \"generic_interior_window_vis_0.88\",\n \"modifier\": null,\n \"r_transmissivity\": 0.9584154328610596,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_transmissivity\": 0.6975761815384331,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.6975761815384331,\n \"identifier\": \"generic_exterior_window_vis_0.64\",\n \"modifier\": null,\n \"r_transmissivity\": 0.6975761815384331,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_reflectance\": 1.0,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 1.0,\n \"identifier\": \"air_boundary\",\n \"modifier\": null,\n \"r_reflectance\": 1.0,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"transmitted_diff\": 1.0,\n \"transmitted_spec\": 1.0,\n \"type\": \"Trans\"\n }\n ],\n \"wall_set\": {\n \"exterior_modifier\": \"generic_wall_0.50\",\n \"interior_modifier\": \"generic_wall_0.50\",\n \"type\": \"WallModifierSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_modifier\": \"generic_floor_0.20\",\n \"interior_modifier\": \"generic_floor_0.20\",\n \"type\": \"FloorModifierSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_modifier\": \"generic_ceiling_0.80\",\n \"interior_modifier\": \"generic_ceiling_0.80\",\n \"type\": \"RoofCeilingModifierSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_modifier\": \"generic_interior_window_vis_0.88\",\n \"operable_modifier\": \"generic_exterior_window_vis_0.64\",\n \"skylight_modifier\": \"generic_exterior_window_vis_0.64\",\n \"type\": \"ApertureModifierSetAbridged\",\n \"window_modifier\": \"generic_exterior_window_vis_0.64\"\n },\n \"door_set\": {\n \"exterior_glass_modifier\": \"generic_exterior_window_vis_0.64\",\n \"exterior_modifier\": \"generic_opaque_door_0.50\",\n \"interior_glass_modifier\": \"generic_interior_window_vis_0.88\",\n \"interior_modifier\": \"generic_opaque_door_0.50\",\n \"overhead_modifier\": \"generic_opaque_door_0.50\",\n \"type\": \"DoorModifierSetAbridged\"\n },\n \"shade_set\": {\n \"exterior_modifier\": \"generic_exterior_shade_0.35\",\n \"interior_modifier\": \"generic_interior_shade_0.50\",\n \"type\": \"ShadeModifierSetAbridged\"\n },\n \"air_boundary_modifier\": \"air_boundary\",\n \"context_modifier\": \"generic_context_0.20\"\n});\n }\n\n\n override init(_data?: any) {\n\n if (_data) {\n const obj = deepTransform(ModelRadianceProperties, _data);\n this.type = obj.type ?? \"ModelRadianceProperties\";\n this.globalModifierSet = obj.globalModifierSet ?? GlobalModifierSet.fromJS({\n \"type\": \"GlobalModifierSet\",\n \"modifiers\": [\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_floor_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_wall_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.8,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.8,\n \"identifier\": \"generic_ceiling_0.80\",\n \"modifier\": null,\n \"r_reflectance\": 0.8,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_opaque_door_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_interior_shade_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.35,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.35,\n \"identifier\": \"generic_exterior_shade_0.35\",\n \"modifier\": null,\n \"r_reflectance\": 0.35,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_context_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_transmissivity\": 0.9584154328610596,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.9584154328610596,\n \"identifier\": \"generic_interior_window_vis_0.88\",\n \"modifier\": null,\n \"r_transmissivity\": 0.9584154328610596,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_transmissivity\": 0.6975761815384331,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.6975761815384331,\n \"identifier\": \"generic_exterior_window_vis_0.64\",\n \"modifier\": null,\n \"r_transmissivity\": 0.6975761815384331,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_reflectance\": 1.0,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 1.0,\n \"identifier\": \"air_boundary\",\n \"modifier\": null,\n \"r_reflectance\": 1.0,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"transmitted_diff\": 1.0,\n \"transmitted_spec\": 1.0,\n \"type\": \"Trans\"\n }\n ],\n \"wall_set\": {\n \"exterior_modifier\": \"generic_wall_0.50\",\n \"interior_modifier\": \"generic_wall_0.50\",\n \"type\": \"WallModifierSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_modifier\": \"generic_floor_0.20\",\n \"interior_modifier\": \"generic_floor_0.20\",\n \"type\": \"FloorModifierSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_modifier\": \"generic_ceiling_0.80\",\n \"interior_modifier\": \"generic_ceiling_0.80\",\n \"type\": \"RoofCeilingModifierSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_modifier\": \"generic_interior_window_vis_0.88\",\n \"operable_modifier\": \"generic_exterior_window_vis_0.64\",\n \"skylight_modifier\": \"generic_exterior_window_vis_0.64\",\n \"type\": \"ApertureModifierSetAbridged\",\n \"window_modifier\": \"generic_exterior_window_vis_0.64\"\n },\n \"door_set\": {\n \"exterior_glass_modifier\": \"generic_exterior_window_vis_0.64\",\n \"exterior_modifier\": \"generic_opaque_door_0.50\",\n \"interior_glass_modifier\": \"generic_interior_window_vis_0.88\",\n \"interior_modifier\": \"generic_opaque_door_0.50\",\n \"overhead_modifier\": \"generic_opaque_door_0.50\",\n \"type\": \"DoorModifierSetAbridged\"\n },\n \"shade_set\": {\n \"exterior_modifier\": \"generic_exterior_shade_0.35\",\n \"interior_modifier\": \"generic_interior_shade_0.50\",\n \"type\": \"ShadeModifierSetAbridged\"\n },\n \"air_boundary_modifier\": \"air_boundary\",\n \"context_modifier\": \"generic_context_0.20\"\n});\n this.modifierSets = obj.modifierSets;\n this.modifiers = obj.modifiers;\n }\n }\n\n\n static override fromJS(data: any): ModelRadianceProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelRadianceProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type ?? \"ModelRadianceProperties\";\n data[\"global_modifier_set\"] = this.globalModifierSet ?? GlobalModifierSet.fromJS({\n \"type\": \"GlobalModifierSet\",\n \"modifiers\": [\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_floor_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_wall_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.8,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.8,\n \"identifier\": \"generic_ceiling_0.80\",\n \"modifier\": null,\n \"r_reflectance\": 0.8,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_opaque_door_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.5,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.5,\n \"identifier\": \"generic_interior_shade_0.50\",\n \"modifier\": null,\n \"r_reflectance\": 0.5,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.35,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.35,\n \"identifier\": \"generic_exterior_shade_0.35\",\n \"modifier\": null,\n \"r_reflectance\": 0.35,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_reflectance\": 0.2,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 0.2,\n \"identifier\": \"generic_context_0.20\",\n \"modifier\": null,\n \"r_reflectance\": 0.2,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"type\": \"Plastic\"\n },\n {\n \"b_transmissivity\": 0.9584154328610596,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.9584154328610596,\n \"identifier\": \"generic_interior_window_vis_0.88\",\n \"modifier\": null,\n \"r_transmissivity\": 0.9584154328610596,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_transmissivity\": 0.6975761815384331,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_transmissivity\": 0.6975761815384331,\n \"identifier\": \"generic_exterior_window_vis_0.64\",\n \"modifier\": null,\n \"r_transmissivity\": 0.6975761815384331,\n \"refraction_index\": null,\n \"type\": \"Glass\"\n },\n {\n \"b_reflectance\": 1.0,\n \"dependencies\": [],\n \"display_name\": null,\n \"g_reflectance\": 1.0,\n \"identifier\": \"air_boundary\",\n \"modifier\": null,\n \"r_reflectance\": 1.0,\n \"roughness\": 0.0,\n \"specularity\": 0.0,\n \"transmitted_diff\": 1.0,\n \"transmitted_spec\": 1.0,\n \"type\": \"Trans\"\n }\n ],\n \"wall_set\": {\n \"exterior_modifier\": \"generic_wall_0.50\",\n \"interior_modifier\": \"generic_wall_0.50\",\n \"type\": \"WallModifierSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_modifier\": \"generic_floor_0.20\",\n \"interior_modifier\": \"generic_floor_0.20\",\n \"type\": \"FloorModifierSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_modifier\": \"generic_ceiling_0.80\",\n \"interior_modifier\": \"generic_ceiling_0.80\",\n \"type\": \"RoofCeilingModifierSetAbridged\"\n },\n \"aperture_set\": {\n \"interior_modifier\": \"generic_interior_window_vis_0.88\",\n \"operable_modifier\": \"generic_exterior_window_vis_0.64\",\n \"skylight_modifier\": \"generic_exterior_window_vis_0.64\",\n \"type\": \"ApertureModifierSetAbridged\",\n \"window_modifier\": \"generic_exterior_window_vis_0.64\"\n },\n \"door_set\": {\n \"exterior_glass_modifier\": \"generic_exterior_window_vis_0.64\",\n \"exterior_modifier\": \"generic_opaque_door_0.50\",\n \"interior_glass_modifier\": \"generic_interior_window_vis_0.88\",\n \"interior_modifier\": \"generic_opaque_door_0.50\",\n \"overhead_modifier\": \"generic_opaque_door_0.50\",\n \"type\": \"DoorModifierSetAbridged\"\n },\n \"shade_set\": {\n \"exterior_modifier\": \"generic_exterior_shade_0.35\",\n \"interior_modifier\": \"generic_interior_shade_0.50\",\n \"type\": \"ShadeModifierSetAbridged\"\n },\n \"air_boundary_modifier\": \"air_boundary\",\n \"context_modifier\": \"generic_context_0.20\"\n});\n data[\"modifier_sets\"] = this.modifierSets;\n data[\"modifiers\"] = this.modifiers;\n data = super.toJSON(data);\n return instanceToPlain(data, { exposeUnsetFields: false });\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n","// Auto-generated\n\n/** An enumeration. */\nexport enum Units {\n Meters = \"Meters\",\n Millimeters = \"Millimeters\",\n Feet = \"Feet\",\n Inches = \"Inches\",\n Centimeters = \"Centimeters\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum ModuleType {\n Standard = \"Standard\",\n Premium = \"Premium\",\n ThinFilm = \"ThinFilm\",\n}","// Auto-generated\n\n/** Acceptable values for the moisture diffusion model for vegetation. */\nexport enum MoistureDiffusionModel {\n Simple = \"Simple\",\n Advanced = \"Advanced\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum MountingType {\n FixedOpenRack = \"FixedOpenRack\",\n FixedRoofMounted = \"FixedRoofMounted\",\n OneAxis = \"OneAxis\",\n OneAxisBacktracking = \"OneAxisBacktracking\",\n TwoAxis = \"TwoAxis\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum PSZEquipmentType {\n PSZAC_ElectricBaseboard = \"PSZAC_ElectricBaseboard\",\n PSZAC_BoilerBaseboard = \"PSZAC_BoilerBaseboard\",\n PSZAC_DHWBaseboard = \"PSZAC_DHWBaseboard\",\n PSZAC_GasHeaters = \"PSZAC_GasHeaters\",\n PSZAC_ElectricCoil = \"PSZAC_ElectricCoil\",\n PSZAC_GasCoil = \"PSZAC_GasCoil\",\n PSZAC_Boiler = \"PSZAC_Boiler\",\n PSZAC_ASHP = \"PSZAC_ASHP\",\n PSZAC_DHW = \"PSZAC_DHW\",\n PSZAC = \"PSZAC\",\n PSZAC_DCW_ElectricBaseboard = \"PSZAC_DCW_ElectricBaseboard\",\n PSZAC_DCW_BoilerBaseboard = \"PSZAC_DCW_BoilerBaseboard\",\n PSZAC_DCW_GasHeaters = \"PSZAC_DCW_GasHeaters\",\n PSZAC_DCW_ElectricCoil = \"PSZAC_DCW_ElectricCoil\",\n PSZAC_DCW_GasCoil = \"PSZAC_DCW_GasCoil\",\n PSZAC_DCW_Boiler = \"PSZAC_DCW_Boiler\",\n PSZAC_DCW_ASHP = \"PSZAC_DCW_ASHP\",\n PSZAC_DCW_DHW = \"PSZAC_DCW_DHW\",\n PSZAC_DCW = \"PSZAC_DCW\",\n PSZHP = \"PSZHP\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum PTACEquipmentType {\n PTAC_ElectricBaseboard = \"PTAC_ElectricBaseboard\",\n PTAC_BoilerBaseboard = \"PTAC_BoilerBaseboard\",\n PTAC_DHWBaseboard = \"PTAC_DHWBaseboard\",\n PTAC_GasHeaters = \"PTAC_GasHeaters\",\n PTAC_ElectricCoil = \"PTAC_ElectricCoil\",\n PTAC_GasCoil = \"PTAC_GasCoil\",\n PTAC_Boiler = \"PTAC_Boiler\",\n PTAC_ASHP = \"PTAC_ASHP\",\n PTAC_DHW = \"PTAC_DHW\",\n PTAC = \"PTAC\",\n PTHP = \"PTHP\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum PVAVEquipmentType {\n PVAV_Boiler = \"PVAV_Boiler\",\n PVAV_ASHP = \"PVAV_ASHP\",\n PVAV_DHW = \"PVAV_DHW\",\n PVAV_PFP = \"PVAV_PFP\",\n PVAV_BoilerElectricReheat = \"PVAV_BoilerElectricReheat\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum RadiantEquipmentType {\n Radiant_Chiller_Boiler = \"Radiant_Chiller_Boiler\",\n Radiant_Chiller_ASHP = \"Radiant_Chiller_ASHP\",\n Radiant_Chiller_DHW = \"Radiant_Chiller_DHW\",\n Radiant_ACChiller_Boiler = \"Radiant_ACChiller_Boiler\",\n Radiant_ACChiller_ASHP = \"Radiant_ACChiller_ASHP\",\n Radiant_ACChiller_DHW = \"Radiant_ACChiller_DHW\",\n Radiant_DCW_Boiler = \"Radiant_DCW_Boiler\",\n Radiant_DCW_ASHP = \"Radiant_DCW_ASHP\",\n Radiant_DCW_DHW = \"Radiant_DCW_DHW\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum RadiantFaceTypes {\n Floor = \"Floor\",\n Ceiling = \"Ceiling\",\n FloorWithCarpet = \"FloorWithCarpet\",\n CeilingMetalPanel = \"CeilingMetalPanel\",\n FloorWithHardwood = \"FloorWithHardwood\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum RadiantwithDOASEquipmentType {\n DOAS_Radiant_Chiller_Boiler = \"DOAS_Radiant_Chiller_Boiler\",\n DOAS_Radiant_Chiller_ASHP = \"DOAS_Radiant_Chiller_ASHP\",\n DOAS_Radiant_Chiller_DHW = \"DOAS_Radiant_Chiller_DHW\",\n DOAS_Radiant_ACChiller_Boiler = \"DOAS_Radiant_ACChiller_Boiler\",\n DOAS_Radiant_ACChiller_ASHP = \"DOAS_Radiant_ACChiller_ASHP\",\n DOAS_Radiant_ACChiller_DHW = \"DOAS_Radiant_ACChiller_DHW\",\n DOAS_Radiant_DCW_Boiler = \"DOAS_Radiant_DCW_Boiler\",\n DOAS_Radiant_DCW_ASHP = \"DOAS_Radiant_DCW_ASHP\",\n DOAS_Radiant_DCW_DHW = \"DOAS_Radiant_DCW_DHW\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum ResidentialEquipmentType {\n ResidentialAC_ElectricBaseboard = \"ResidentialAC_ElectricBaseboard\",\n ResidentialAC_BoilerBaseboard = \"ResidentialAC_BoilerBaseboard\",\n ResidentialAC_ASHPBaseboard = \"ResidentialAC_ASHPBaseboard\",\n ResidentialAC_DHWBaseboard = \"ResidentialAC_DHWBaseboard\",\n ResidentialAC_ResidentialFurnace = \"ResidentialAC_ResidentialFurnace\",\n ResidentialAC = \"ResidentialAC\",\n ResidentialHP = \"ResidentialHP\",\n ResidentialHPNoCool = \"ResidentialHPNoCool\",\n ResidentialFurnace = \"ResidentialFurnace\",\n}","// Auto-generated\n\n/** Relative roughness of a particular material layer. */\nexport enum Roughness {\n VeryRough = \"VeryRough\",\n Rough = \"Rough\",\n MediumRough = \"MediumRough\",\n MediumSmooth = \"MediumSmooth\",\n Smooth = \"Smooth\",\n VerySmooth = \"VerySmooth\",\n}","// Auto-generated\n\n/** Designates how the range values are validated. */\nexport enum ScheduleNumericType {\n Continuous = \"Continuous\",\n Discrete = \"Discrete\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum ScheduleUnitType {\n Dimensionless = \"Dimensionless\",\n Temperature = \"Temperature\",\n DeltaTemperature = \"DeltaTemperature\",\n PrecipitationRate = \"PrecipitationRate\",\n Angle = \"Angle\",\n ConvectionCoefficient = \"ConvectionCoefficient\",\n ActivityLevel = \"ActivityLevel\",\n Velocity = \"Velocity\",\n Capacity = \"Capacity\",\n Power = \"Power\",\n Availability = \"Availability\",\n Percent = \"Percent\",\n Control = \"Control\",\n Mode = \"Mode\",\n}","// Auto-generated\n\n/** Choices for where a shade material is located in a window assembly. */\nexport enum ShadeLocation {\n Interior = \"Interior\",\n Between = \"Between\",\n Exterior = \"Exterior\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum SHWEquipmentType {\n Gas_WaterHeater = \"Gas_WaterHeater\",\n Electric_WaterHeater = \"Electric_WaterHeater\",\n HeatPump_WaterHeater = \"HeatPump_WaterHeater\",\n Gas_TanklessHeater = \"Gas_TanklessHeater\",\n Electric_TanklessHeater = \"Electric_TanklessHeater\",\n District_WaterHeater = \"District_WaterHeater\",\n District_TanklessHeater = \"District_TanklessHeater\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum SlatOrientation {\n Horizontal = \"Horizontal\",\n Vertical = \"Vertical\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VAVEquipmentType {\n VAV_Chiller_Boiler = \"VAV_Chiller_Boiler\",\n VAV_Chiller_ASHP = \"VAV_Chiller_ASHP\",\n VAV_Chiller_DHW = \"VAV_Chiller_DHW\",\n VAV_Chiller_PFP = \"VAV_Chiller_PFP\",\n VAV_Chiller_GasCoil = \"VAV_Chiller_GasCoil\",\n VAV_ACChiller_Boiler = \"VAV_ACChiller_Boiler\",\n VAV_ACChiller_ASHP = \"VAV_ACChiller_ASHP\",\n VAV_ACChiller_DHW = \"VAV_ACChiller_DHW\",\n VAV_ACChiller_PFP = \"VAV_ACChiller_PFP\",\n VAV_ACChiller_GasCoil = \"VAV_ACChiller_GasCoil\",\n VAV_DCW_Boiler = \"VAV_DCW_Boiler\",\n VAV_DCW_ASHP = \"VAV_DCW_ASHP\",\n VAV_DCW_DHW = \"VAV_DCW_DHW\",\n VAV_DCW_PFP = \"VAV_DCW_PFP\",\n VAV_DCW_GasCoil = \"VAV_DCW_GasCoil\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VentilationMethod {\n Sum = \"Sum\",\n Max = \"Max\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VentilationType {\n Exhaust = \"Exhaust\",\n Intake = \"Intake\",\n Balanced = \"Balanced\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum Vintages {\n ASHRAE_2019 = \"ASHRAE_2019\",\n ASHRAE_2016 = \"ASHRAE_2016\",\n ASHRAE_2013 = \"ASHRAE_2013\",\n ASHRAE_2010 = \"ASHRAE_2010\",\n ASHRAE_2007 = \"ASHRAE_2007\",\n ASHRAE_2004 = \"ASHRAE_2004\",\n DOE_Ref_1980_2004 = \"DOE_Ref_1980_2004\",\n DOE_Ref_Pre_1980 = \"DOE_Ref_Pre_1980\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VRFEquipmentType {\n VRF = \"VRF\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum VRFwithDOASEquipmentType {\n DOAS_VRF = \"DOAS_VRF\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum WindowACEquipmentType {\n WindowAC_ElectricBaseboard = \"WindowAC_ElectricBaseboard\",\n WindowAC_BoilerBaseboard = \"WindowAC_BoilerBaseboard\",\n WindowAC_ASHPBaseboard = \"WindowAC_ASHPBaseboard\",\n WindowAC_DHWBaseboard = \"WindowAC_DHWBaseboard\",\n WindowAC_Furnace = \"WindowAC_Furnace\",\n WindowAC_GasHeaters = \"WindowAC_GasHeaters\",\n WindowAC = \"WindowAC\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum WSHPEquipmentType {\n WSHP_FluidCooler_Boiler = \"WSHP_FluidCooler_Boiler\",\n WSHP_CoolingTower_Boiler = \"WSHP_CoolingTower_Boiler\",\n WSHP_GSHP = \"WSHP_GSHP\",\n WSHP_DCW_DHW = \"WSHP_DCW_DHW\",\n}","// Auto-generated\n\n/** An enumeration. */\nexport enum WSHPwithDOASEquipmentType {\n DOAS_WSHP_FluidCooler_Boiler = \"DOAS_WSHP_FluidCooler_Boiler\",\n DOAS_WSHP_CoolingTower_Boiler = \"DOAS_WSHP_CoolingTower_Boiler\",\n DOAS_WSHP_GSHP = \"DOAS_WSHP_GSHP\",\n DOAS_WSHP_DCW_DHW = \"DOAS_WSHP_DCW_DHW\",\n}"],"mappings":"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","names":["import_class_validator","import_class_transformer","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","AllAirEconomizerType","BaseboardEquipmentType","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_honeybee_schema","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","ExteriorApertureType","import_class_validator","import_class_transformer","ExteriorFaceType","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","StoryType","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","ControlType","EconomizerType","EvaporativeCoolerEquipmentType","FaceType","FCUEquipmentType","FCUwithDOASEquipmentType","FuelTypes","FurnaceEquipmentType","GasType","GasUnitHeaterEquipmentType","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_class_validator","import_class_transformer","import_honeybee_schema","import_class_validator","import_class_transformer","import_honeybee_schema","Units","ModuleType","MoistureDiffusionModel","MountingType","PSZEquipmentType","PTACEquipmentType","PVAVEquipmentType","RadiantEquipmentType","RadiantFaceTypes","RadiantwithDOASEquipmentType","ResidentialEquipmentType","Roughness","ScheduleNumericType","ScheduleUnitType","ShadeLocation","SHWEquipmentType","SlatOrientation","VAVEquipmentType","VentilationMethod","VentilationType","Vintages","VRFEquipmentType","VRFwithDOASEquipmentType","WindowACEquipmentType","WSHPEquipmentType","WSHPwithDOASEquipmentType"]}