@iotize/tap
Version:
IoTize Device client for Javascript
480 lines • 42.7 kB
JavaScript
/**
* Generated file. Do not edit
*/
import { isTapFirmwareVersionGreaterThanOrEqual, isTapFirmwareVersionLessThanOrEqual, } from '../util';
import { ConfigKeyNotSupportedByFirmwareVersion } from '../errors';
const ɵ0 = (context) => {
return context.service.interface.getApplicationDataCall();
}, ɵ1 = (context) => {
return context.service.interface.getAppNameCall();
}, ɵ2 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.113')) {
return new ConfigKeyNotSupportedByFirmwareVersion('application.productCode', context.firmwareVersion, {
minApiVersion: '1.113',
maxApiVersion: undefined,
});
}
}
return context.service.interface.getProductCodeCall();
}, ɵ3 = (context) => {
return context.service.interface.getUniversalLinkCall();
}, ɵ4 = (context) => {
return context.service.interface.getAppPathCall();
}, ɵ5 = (context) => {
return context.service.cloud.getDataLogPublishTopicCall();
}, ɵ6 = (context) => {
return context.service.cloud.getDataLogSubscribeTopicCall();
}, ɵ7 = (context) => {
return context.service.cloud.getDataLogUploadPeriodCall();
}, ɵ8 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionLessThanOrEqual(context.firmwareVersion, '1.103')) {
return new ConfigKeyNotSupportedByFirmwareVersion('cloud.mqtt.brokerPort', context.firmwareVersion, {
minApiVersion: undefined,
maxApiVersion: '1.103',
});
}
}
return context.service.cloud.getMqttBrokerPortCall();
}, ɵ9 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionLessThanOrEqual(context.firmwareVersion, '1.103')) {
return new ConfigKeyNotSupportedByFirmwareVersion('cloud.mqtt.clientId', context.firmwareVersion, {
minApiVersion: undefined,
maxApiVersion: '1.103',
});
}
}
return context.service.cloud.getMqttClientIdCall();
}, ɵ10 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionLessThanOrEqual(context.firmwareVersion, '1.103')) {
return new ConfigKeyNotSupportedByFirmwareVersion('cloud.mqtt.password', context.firmwareVersion, {
minApiVersion: undefined,
maxApiVersion: '1.103',
});
}
}
return context.service.cloud.getMqttPasswordCall();
}, ɵ11 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionLessThanOrEqual(context.firmwareVersion, '1.103')) {
return new ConfigKeyNotSupportedByFirmwareVersion('cloud.mqtt.username', context.firmwareVersion, {
minApiVersion: undefined,
maxApiVersion: '1.103',
});
}
}
return context.service.cloud.getMqttUsernameCall();
}, ɵ12 = (context) => {
return context.service.cloud.getPlatformCall();
}, ɵ13 = (context) => {
return context.service.interface.getConfigFormatVersionCall();
}, ɵ14 = (context) => {
return context.service.bundle.getDataLogCryptoGroupIdCall(context.param);
}, ɵ15 = (context) => {
return context.service.bundle.getDataLogPeriodCall(context.param);
}, ɵ16 = (context) => {
return context.service.bundle.getNameCall(context.param);
}, ɵ17 = (context) => {
return context.service.group.getAliasCall(context.param);
}, ɵ18 = (context) => {
return context.service.group.getSessionLifetimeCall(context.param);
}, ɵ19 = (context) => {
return context.service.group.getNameCall(context.param);
}, ɵ20 = (context) => {
return context.service.variable.getVariableAddressCall(context.param);
}, ɵ21 = (context) => {
return context.service.variable.getBundleIdCall(context.param);
}, ɵ22 = (context) => {
return context.service.variable.getNumberOfElementsCall(context.param);
}, ɵ23 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.73')) {
return new ConfigKeyNotSupportedByFirmwareVersion('data.variables[].meta', context.firmwareVersion, {
minApiVersion: '1.73',
maxApiVersion: undefined,
});
}
}
return context.service.variable.getMetaCall(context.param);
}, ɵ24 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.73')) {
return new ConfigKeyNotSupportedByFirmwareVersion('data.variables[].rawMeta', context.firmwareVersion, {
minApiVersion: '1.73',
maxApiVersion: undefined,
});
}
}
return context.service.variable.getRawMetaCall(context.param);
}, ɵ25 = (context) => {
return context.service.variable.getTypeCall(context.param);
}, ɵ26 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.90')) {
return new ConfigKeyNotSupportedByFirmwareVersion('jvm.codeSize', context.firmwareVersion, {
minApiVersion: '1.90',
maxApiVersion: undefined,
});
}
}
return context.service.jvm.getCodeSizeCall();
}, ɵ27 = (context) => {
return context.service.jvm.getProfileIdCall();
}, ɵ28 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.7')) {
return new ConfigKeyNotSupportedByFirmwareVersion('ports.ethernet.gatewayIp', context.firmwareVersion, {
minApiVersion: '2.7',
maxApiVersion: undefined,
});
}
}
return context.service.ethernet.getGatewayIpCall();
}, ɵ29 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.7')) {
return new ConfigKeyNotSupportedByFirmwareVersion('ports.ethernet.ip', context.firmwareVersion, {
minApiVersion: '2.7',
maxApiVersion: undefined,
});
}
}
return context.service.ethernet.getIpCall();
}, ɵ30 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.7')) {
return new ConfigKeyNotSupportedByFirmwareVersion('ports.ethernet.ipMask', context.firmwareVersion, {
minApiVersion: '2.7',
maxApiVersion: undefined,
});
}
}
return context.service.ethernet.getIpMaskCall();
}, ɵ31 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.11')) {
return new ConfigKeyNotSupportedByFirmwareVersion('tap.autoRebootTimeout', context.firmwareVersion, {
minApiVersion: '2.11',
maxApiVersion: undefined,
});
}
}
return context.service.interface.getAutoRebootTimeoutCall();
}, ɵ32 = (context) => {
return context.service.interface.getMaxLowPowerTimeCall();
}, ɵ33 = (context) => {
return context.service.interface.getPowerOptimisationLevelCall();
}, ɵ34 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.15')) {
return new ConfigKeyNotSupportedByFirmwareVersion('tap.powerOptimizationOptions', context.firmwareVersion, {
minApiVersion: '2.15',
maxApiVersion: undefined,
});
}
}
return context.service.interface.getPowerOptimisationOptionsCall();
}, ɵ35 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.11')) {
return new ConfigKeyNotSupportedByFirmwareVersion('tap.scram.hashIteration', context.firmwareVersion, {
minApiVersion: '1.11',
maxApiVersion: undefined,
});
}
}
return context.service.scram.getHashIterationCall();
}, ɵ36 = (context) => {
return context.service.interface.getSecurityOptionsCall();
}, ɵ37 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.107')) {
return new ConfigKeyNotSupportedByFirmwareVersion('tap.time.ntpServer', context.firmwareVersion, {
minApiVersion: '1.107',
maxApiVersion: undefined,
});
}
}
return context.service.time.getNtpServerCall();
}, ɵ38 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.107')) {
return new ConfigKeyNotSupportedByFirmwareVersion('tap.time.zone', context.firmwareVersion, {
minApiVersion: '1.107',
maxApiVersion: undefined,
});
}
}
return context.service.time.getTimeZoneCall();
}, ɵ39 = (context) => {
return context.service.target.getFirmwareVersionCall();
}, ɵ40 = (context) => {
return context.service.target.getModbusDefaultSlaveAddressCall();
}, ɵ41 = (context) => {
return context.service.target.getProtocolCall();
}, ɵ42 = (context) => {
return context.service.interface.getConfigVersionCall();
}, ɵ43 = (context) => {
return context.service.interface.getAuthorizedHostProtocolCall();
}, ɵ44 = (context) => {
return context.service.interface.getHostInactivityPeriodCall();
}, ɵ45 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.13')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.options.network', context.firmwareVersion, {
minApiVersion: '2.13',
maxApiVersion: undefined,
});
}
}
return context.service.interface.getNetworkOptionsCall();
}, ɵ46 = (context) => {
return context.service.interface.getPairingOptionsCall();
}, ɵ47 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.7')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.ethernet.dnsIp', context.firmwareVersion, {
minApiVersion: '2.7',
maxApiVersion: undefined,
});
}
}
return context.service.ethernet.getDnsIpCall();
}, ɵ48 = (context) => {
return context.service.lora.getConfigCall();
}, ɵ49 = (context) => {
return context.service.lora.getIdsCall();
}, ɵ50 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.11')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.lte.applicationData', context.firmwareVersion, {
minApiVersion: '2.11',
maxApiVersion: undefined,
});
}
}
return context.service.lte.getApplicationDataCall();
}, ɵ51 = (context) => {
return context.service.mqtt.getBrokerHostnameCall();
}, ɵ52 = (context) => {
return context.service.mqtt.getBrokerPortCall();
}, ɵ53 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.86')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.mqtt.clientId', context.firmwareVersion, {
minApiVersion: '1.86',
maxApiVersion: undefined,
});
}
}
return context.service.mqtt.getClientIdCall();
}, ɵ54 = (context) => {
return context.service.mqtt.getPasswordCall();
}, ɵ55 = (context) => {
return context.service.mqtt.getRelayNetKeyCall();
}, ɵ56 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.86')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.mqtt.requestTopic', context.firmwareVersion, {
minApiVersion: '1.86',
maxApiVersion: undefined,
});
}
}
return context.service.mqtt.getRequestTopicCall();
}, ɵ57 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.107')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.mqtt.responseTopic', context.firmwareVersion, {
minApiVersion: '1.107',
maxApiVersion: undefined,
});
}
}
return context.service.mqtt.getResponseTopicCall();
}, ɵ58 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.86')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.mqtt.username', context.firmwareVersion, {
minApiVersion: '1.86',
maxApiVersion: undefined,
});
}
}
return context.service.mqtt.getUsernameCall();
}, ɵ59 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.55')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.nfc.autoLogProfileId', context.firmwareVersion, {
minApiVersion: '1.55',
maxApiVersion: undefined,
});
}
}
return context.service.interface.getNfcAutologProfileIdCall();
}, ɵ60 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.85')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.nfc.connectionPriority', context.firmwareVersion, {
minApiVersion: '1.85',
maxApiVersion: undefined,
});
}
}
return context.service.interface.getNfcConnectionPriorityCall();
}, ɵ61 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.countryCode', context.firmwareVersion, {
minApiVersion: '1.88',
maxApiVersion: undefined,
});
}
}
return context.service.wifi.getCountryCodeCall();
}, ɵ62 = (context) => {
return context.service.wifi.getDnsIpCall();
}, ɵ63 = (context) => {
return context.service.wifi.getGatewayIpCall();
}, ɵ64 = (context) => {
return context.service.wifi.getIpCall();
}, ɵ65 = (context) => {
return context.service.wifi.getKeyCall();
}, ɵ66 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.keyVisibility', context.firmwareVersion, {
minApiVersion: '1.88',
maxApiVersion: undefined,
});
}
}
return context.service.wifi.getKeyVisibilityCall();
}, ɵ67 = (context) => {
return context.service.wifi.getIpMaskCall();
}, ɵ68 = (context) => {
return context.service.wifi.getModeCall();
}, ɵ69 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '2.13')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.networkMode', context.firmwareVersion, {
minApiVersion: '2.13',
maxApiVersion: undefined,
});
}
}
return context.service.wifi.getNetworkModeCall();
}, ɵ70 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.protocol', context.firmwareVersion, {
minApiVersion: '1.88',
maxApiVersion: undefined,
});
}
}
return context.service.wifi.getProtocolCall();
}, ɵ71 = (context) => {
return context.service.wifi.getSSIDCall();
}, ɵ72 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.ssidVisibility', context.firmwareVersion, {
minApiVersion: '1.88',
maxApiVersion: undefined,
});
}
}
return context.service.wifi.getSSIDVisibilityCall();
}, ɵ73 = (context) => {
if (context.firmwareVersion) {
if (!isTapFirmwareVersionGreaterThanOrEqual(context.firmwareVersion, '1.88')) {
return new ConfigKeyNotSupportedByFirmwareVersion('wireless.protocols.wifi.txPower', context.firmwareVersion, {
minApiVersion: '1.88',
maxApiVersion: undefined,
});
}
}
return context.service.wifi.getTxPowerCall();
};
export const READ_CONFIGURATOR_CONFIG = {
'application.data': ɵ0,
'application.name': ɵ1,
'application.productCode': ɵ2,
'application.universalLink': ɵ3,
'application.uri': ɵ4,
'cloud.dataLog.mqttPublishTopic': ɵ5,
'cloud.dataLog.mqttSubscribeTopic': ɵ6,
'cloud.dataLog.uploadPeriod': ɵ7,
'cloud.mqtt.brokerPort': ɵ8,
'cloud.mqtt.clientId': ɵ9,
'cloud.mqtt.password': ɵ10,
'cloud.mqtt.username': ɵ11,
'cloud.platform': ɵ12,
configFormatVersion: ɵ13,
'data.bundles[].dataLog.cryptoGroupId': ɵ14,
'data.bundles[].dataLog.period': ɵ15,
'data.bundles[].name': ɵ16,
'data.profiles[].alias': ɵ17,
'data.profiles[].lifeTime': ɵ18,
'data.profiles[].username': ɵ19,
'data.variables[].address': ɵ20,
'data.variables[].bundleId': ɵ21,
'data.variables[].length': ɵ22,
'data.variables[].meta': ɵ23,
'data.variables[].rawMeta': ɵ24,
'data.variables[].type': ɵ25,
'jvm.codeSize': ɵ26,
'jvm.profileId': ɵ27,
'ports.ethernet.gatewayIp': ɵ28,
'ports.ethernet.ip': ɵ29,
'ports.ethernet.ipMask': ɵ30,
'tap.autoRebootTimeout': ɵ31,
'tap.maxLowPowerTime': ɵ32,
'tap.powerOptimization': ɵ33,
'tap.powerOptimizationOptions': ɵ34,
'tap.scram.hashIteration': ɵ35,
'tap.security': ɵ36,
'tap.time.ntpServer': ɵ37,
'tap.time.zone': ɵ38,
'target.firmwareVersion': ɵ39,
'target.modbusDefaultSlaveAddress': ɵ40,
'target.protocol.type': ɵ41,
version: ɵ42,
'wireless.options.authorizedProtocols': ɵ43,
'wireless.options.inactivityTimeout': ɵ44,
'wireless.options.network': ɵ45,
'wireless.options.pairing': ɵ46,
'wireless.protocols.ethernet.dnsIp': ɵ47,
'wireless.protocols.lora.config': ɵ48,
'wireless.protocols.lora.ids': ɵ49,
'wireless.protocols.lte.applicationData': ɵ50,
'wireless.protocols.mqtt.brokerHostname': ɵ51,
'wireless.protocols.mqtt.brokerPort': ɵ52,
'wireless.protocols.mqtt.clientId': ɵ53,
'wireless.protocols.mqtt.password': ɵ54,
'wireless.protocols.mqtt.relayNetKey': ɵ55,
'wireless.protocols.mqtt.requestTopic': ɵ56,
'wireless.protocols.mqtt.responseTopic': ɵ57,
'wireless.protocols.mqtt.username': ɵ58,
'wireless.protocols.nfc.autoLogProfileId': ɵ59,
'wireless.protocols.nfc.connectionPriority': ɵ60,
'wireless.protocols.wifi.countryCode': ɵ61,
'wireless.protocols.wifi.dnsIp': ɵ62,
'wireless.protocols.wifi.gatewayIp': ɵ63,
'wireless.protocols.wifi.ip': ɵ64,
'wireless.protocols.wifi.key': ɵ65,
'wireless.protocols.wifi.keyVisibility': ɵ66,
'wireless.protocols.wifi.mask': ɵ67,
'wireless.protocols.wifi.mode': ɵ68,
'wireless.protocols.wifi.networkMode': ɵ69,
'wireless.protocols.wifi.protocol': ɵ70,
'wireless.protocols.wifi.ssid': ɵ71,
'wireless.protocols.wifi.ssidVisibility': ɵ72,
'wireless.protocols.wifi.txPower': ɵ73,
};
export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, ɵ10, ɵ11, ɵ12, ɵ13, ɵ14, ɵ15, ɵ16, ɵ17, ɵ18, ɵ19, ɵ20, ɵ21, ɵ22, ɵ23, ɵ24, ɵ25, ɵ26, ɵ27, ɵ28, ɵ29, ɵ30, ɵ31, ɵ32, ɵ33, ɵ34, ɵ35, ɵ36, ɵ37, ɵ38, ɵ39, ɵ40, ɵ41, ɵ42, ɵ43, ɵ44, ɵ45, ɵ46, ɵ47, ɵ48, ɵ49, ɵ50, ɵ51, ɵ52, ɵ53, ɵ54, ɵ55, ɵ56, ɵ57, ɵ58, ɵ59, ɵ60, ɵ61, ɵ62, ɵ63, ɵ64, ɵ65, ɵ66, ɵ67, ɵ68, ɵ69, ɵ70, ɵ71, ɵ72, ɵ73 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1jb25maWd1cmF0b3ItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlndXJhdG9yL3NyYy9saWIvZ2VuZXJhdGVkL3JlYWQtY29uZmlndXJhdG9yLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQXNDSCxPQUFPLEVBQ0wsc0NBQXNDLEVBQ3RDLG1DQUFtQyxHQUNwQyxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxXQUFXLENBQUM7V0FJN0MsQ0FDbEIsT0FBcUMsRUFDRixFQUFFO0lBQ3JDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztBQUM1RCxDQUFDLE9BRW1CLENBQ2xCLE9BQXFDLEVBQ0YsRUFBRTtJQUNyQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3BELENBQUMsT0FFMEIsQ0FDekIsT0FBcUMsRUFDRixFQUFFO0lBQ3JDLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtRQUMzQixJQUNFLENBQUMsc0NBQXNDLENBQ3JDLE9BQU8sQ0FBQyxlQUFlLEVBQ3ZCLE9BQU8sQ0FDUixFQUNEO1lBQ0EsT0FBTyxJQUFJLHNDQUFzQyxDQUMvQyx5QkFBeUIsRUFDekIsT0FBTyxDQUFDLGVBQWUsRUFDdkI7Z0JBQ0UsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLGFBQWEsRUFBRSxTQUFTO2FBQ3pCLENBQ0YsQ0FBQztTQUNIO0tBQ0Y7SUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFDeEQsQ0FBQyxPQUU0QixDQUMzQixPQUFxQyxFQUNGLEVBQUU7SUFDckMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0FBQzFE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