UNPKG

13.5 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const clusterws_1 = require("clusterws");
4exports.WSServer = clusterws_1.default;
5const inversify_binding_decorators_1 = require("inversify-binding-decorators");
6exports.buildProviderModule = inversify_binding_decorators_1.buildProviderModule;
7const inversify_koa_utils_1 = require("inversify-koa-utils");
8exports.all = inversify_koa_utils_1.all;
9exports.controller = inversify_koa_utils_1.controller;
10exports.cookies = inversify_koa_utils_1.cookies;
11exports.httpDelete = inversify_koa_utils_1.httpDelete;
12exports.httpGet = inversify_koa_utils_1.httpGet;
13exports.httpHead = inversify_koa_utils_1.httpHead;
14exports.httpMethod = inversify_koa_utils_1.httpMethod;
15exports.httpPatch = inversify_koa_utils_1.httpPatch;
16exports.httpPost = inversify_koa_utils_1.httpPost;
17exports.httpPut = inversify_koa_utils_1.httpPut;
18exports.InversifyKoaServer = inversify_koa_utils_1.InversifyKoaServer;
19exports.next = inversify_koa_utils_1.next;
20exports.queryParam = inversify_koa_utils_1.queryParam;
21exports.request = inversify_koa_utils_1.request;
22exports.requestBody = inversify_koa_utils_1.requestBody;
23exports.requestHeaders = inversify_koa_utils_1.requestHeaders;
24exports.requestParam = inversify_koa_utils_1.requestParam;
25exports.response = inversify_koa_utils_1.response;
26exports.TYPE = inversify_koa_utils_1.TYPE;
27const bodyParser = require("koa-bodyparser");
28exports.bodyParser = bodyParser;
29const jwt = require("koa-jwt");
30exports.jwt = jwt;
31const log4js = require("koa-log4");
32exports.log4js = log4js;
33const koa_req_validator_1 = require("koa-req-validator");
34exports.validate = koa_req_validator_1.default;
35const Router = require("koa-router");
36exports.Router = Router;
37const cors = require("koa2-cors");
38exports.cors = cors;
39const BaseConstant_1 = require("./config/BaseConstant");
40exports.BaseConstant = BaseConstant_1.BaseConstant;
41const BaseHttpStatusCode_1 = require("./config/BaseHttpStatusCode");
42exports.BaseHttpStatusCode = BaseHttpStatusCode_1.BaseHttpStatusCode;
43const enum_SQLServerType_1 = require("./config/enum.SQLServerType");
44exports.SQLServerType = enum_SQLServerType_1.SQLServerType;
45const GServer_1 = require("./GServer");
46exports.GServer = GServer_1.default;
47const ioc_1 = require("./ioc/ioc");
48exports.autoProvide = ioc_1.autoProvide;
49exports.container = ioc_1.container;
50exports.inject = ioc_1.inject;
51exports.provide = ioc_1.provide;
52exports.provideNamed = ioc_1.provideNamed;
53const iocTracer_1 = require("./ioc/iocTracer");
54exports.IocTracer = iocTracer_1.default;
55const AnyEntity_1 = require("./models/AnyEntity");
56exports.AnyEntity = AnyEntity_1.default;
57const BaseController_1 = require("./models/BaseController");
58exports.BaseController = BaseController_1.default;
59const BaseEntity_1 = require("./models/BaseEntity");
60exports.BaseEntity = BaseEntity_1.default;
61const BaseExceptions_1 = require("./models/BaseExceptions");
62exports.BaseExceptions = BaseExceptions_1.default;
63const BaseRedisHashZntity_1 = require("./models/BaseRedisHashZntity");
64exports.BaseRedisHashZntity = BaseRedisHashZntity_1.default;
65const BaseRepository_1 = require("./models/BaseRepository");
66exports.BaseRepository = BaseRepository_1.default;
67const BaseResponse_1 = require("./models/BaseResponse");
68exports.BaseResponse = BaseResponse_1.default;
69const BaseService_1 = require("./models/BaseService");
70exports.BaseService = BaseService_1.default;
71const BaseSocketController_1 = require("./models/BaseSocketController");
72exports.BaseSocketController = BaseSocketController_1.default;
73const BaseUserInfo_1 = require("./models/BaseUserInfo");
74exports.BaseUserInfo = BaseUserInfo_1.default;
75const Decorators_1 = require("./models/Decorators");
76exports.Entity = Decorators_1.Entity;
77const DocChanged_1 = require("./models/DocChanged");
78exports.DocChanged = DocChanged_1.default;
79const GHeartbeats_1 = require("./models/GHeartbeats");
80exports.GHeartbeats = GHeartbeats_1.default;
81const HttpInitSetting_1 = require("./models/HttpInitSetting");
82exports.HttpInitSetting = HttpInitSetting_1.default;
83const LibsExceptions_1 = require("./models/LibsExceptions");
84exports.LibsExceptions = LibsExceptions_1.LibsExceptions;
85const MySqlContext_1 = require("./models/MySqlContext");
86exports.MysqlContext = MySqlContext_1.default;
87const NotImplemented_1 = require("./models/NotImplemented");
88exports.NotImplemented = NotImplemented_1.default;
89const RedisContext_1 = require("./models/RedisContext");
90exports.RedisContext = RedisContext_1.default;
91const SocketInitSetting_1 = require("./models/SocketInitSetting");
92exports.SocketInitSetting = SocketInitSetting_1.default;
93const Transaction_1 = require("./models/Transaction");
94exports.Transaction = Transaction_1.default;
95const WebSocketContext_1 = require("./models/WebSocketContext");
96exports.WebSocketContext = WebSocketContext_1.default;
97const WsEntity_1 = require("./models/WsEntity");
98exports.WsEntity = WsEntity_1.default;
99const SServer_1 = require("./SServer");
100exports.SServer = SServer_1.default;
101const BaseDataHelper_1 = require("./utils/BaseDataHelper");
102exports.BaseDataHelper = BaseDataHelper_1.default;
103const BaseSQLHelper_1 = require("./utils/BaseSQLHelper");
104exports.BaseSQLHelper = BaseSQLHelper_1.default;
105const BaseUtils_1 = require("./utils/BaseUtils");
106exports.BaseUtils = BaseUtils_1.default;
107const WSServer_1 = require("./WSServer");
108exports.Init = WSServer_1.Init;
109exports.Worker = WSServer_1.Worker;
110//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFrQztBQW1FakIsbUJBbkVWLG1CQUFTLENBbUVTO0FBbEV6QiwrRUFBbUU7QUErRC9ELDhCQS9ESyxrREFBbUIsQ0ErREw7QUE5RHZCLDZEQUs2QjtBQXVHekIsY0EzR0EseUJBQUcsQ0EyR0E7QUFUSCxxQkFqR0EsZ0NBQVUsQ0FpR0E7QUFpQlYsa0JBbEhZLDZCQUFPLENBa0haO0FBUFAscUJBM0dxQixnQ0FBVSxDQTJHckI7QUFMVixrQkF0R2lDLDZCQUFPLENBc0dqQztBQUdQLG1CQXpHMEMsOEJBQVEsQ0F5RzFDO0FBRlIscUJBdkdvRCxnQ0FBVSxDQXVHcEQ7QUFDVixvQkF4R2dFLCtCQUFTLENBd0doRTtBQU5ULG1CQWxHMkUsOEJBQVEsQ0FrRzNFO0FBQ1Isa0JBbkdxRiw2QkFBTyxDQW1HckY7QUF4Q1AsNkJBMURBLHdDQUFrQixDQTBEQTtBQXdEbEIsZUFsSG9CLDBCQUFJLENBa0hwQjtBQUpKLHFCQTlHMEIsZ0NBQVUsQ0E4RzFCO0FBSFYsa0JBM0dzQyw2QkFBTyxDQTJHdEM7QUFJUCxzQkEvRytDLGlDQUFXLENBK0cvQztBQUNYLHlCQS9HQSxvQ0FBYyxDQStHQTtBQUhkLHVCQTVHZ0Isa0NBQVksQ0E0R2hCO0FBRFosbUJBM0c4Qiw4QkFBUSxDQTJHOUI7QUFUUixlQWxHd0MsMEJBQUksQ0FrR3hDO0FBaEdSLDZDQUE2QztBQXNEekMsZ0NBQVU7QUFyRGQsK0JBQStCO0FBb0QzQixrQkFBRztBQW5EUCxtQ0FBbUM7QUFrRC9CLHdCQUFNO0FBakRWLHlEQUF5QztBQThGckMsbUJBOUZHLDJCQUFRLENBOEZIO0FBN0ZaLHFDQUFxQztBQStDakMsd0JBQU07QUE5Q1Ysa0NBQWtDO0FBNkM5QixvQkFBSTtBQTVDUix3REFBcUQ7QUE4RWpELHVCQTlFSywyQkFBWSxDQThFTDtBQTdFaEIsb0VBQWlFO0FBNEU3RCw2QkE1RUssdUNBQWtCLENBNEVMO0FBM0V0QixvRUFBNEQ7QUE2RXhELHdCQTdFSyxrQ0FBYSxDQTZFTDtBQTVFakIsdUNBQWdDO0FBcUQ1QixrQkFyREcsaUJBQU8sQ0FxREg7QUFwRFgsbUNBQWtGO0FBK0U5RSxzQkEvRUssaUJBQVcsQ0ErRUw7QUFEWCxvQkE5RWtCLGVBQVMsQ0E4RWxCO0FBSVQsaUJBbEY2QixZQUFNLENBa0Y3QjtBQUZOLGtCQWhGcUMsYUFBTyxDQWdGckM7QUFDUCx1QkFqRjhDLGtCQUFZLENBaUY5QztBQWhGaEIsK0NBQXdDO0FBc0NwQyxvQkF0Q0csbUJBQVMsQ0FzQ0g7QUFyQ2Isa0RBQTJDO0FBc0V2QyxvQkF0RUcsbUJBQVMsQ0FzRUg7QUFyRWIsNERBQXFEO0FBa0VqRCx5QkFsRUcsd0JBQWMsQ0FrRUg7QUFqRWxCLG9EQUE2QztBQWdFekMscUJBaEVHLG9CQUFVLENBZ0VIO0FBL0RkLDREQUFxRDtBQThEakQseUJBOURHLHdCQUFjLENBOERIO0FBN0RsQixzRUFBK0Q7QUErQjNELDhCQS9CRyw2QkFBbUIsQ0ErQkg7QUE5QnZCLDREQUFxRDtBQTJEakQseUJBM0RHLHdCQUFjLENBMkRIO0FBMURsQix3REFBaUQ7QUF1RDdDLHVCQXZERyxzQkFBWSxDQXVESDtBQXREaEIsc0RBQStDO0FBd0QzQyxzQkF4REcscUJBQVcsQ0F3REg7QUF2RGYsd0VBQWlFO0FBd0M3RCwrQkF4Q0csOEJBQW9CLENBd0NIO0FBdkN4Qix3REFBaUQ7QUFxRDdDLHVCQXJERyxzQkFBWSxDQXFESDtBQXBEaEIsb0RBQTZDO0FBMkR6QyxpQkEzREssbUJBQU0sQ0EyREw7QUExRFYsb0RBQTZDO0FBeUR6QyxxQkF6REcsb0JBQVUsQ0F5REg7QUF4RGQsc0RBQStDO0FBc0IzQyxzQkF0QkcscUJBQVcsQ0FzQkg7QUFyQmYsOERBQXVEO0FBd0NuRCwwQkF4Q0cseUJBQWUsQ0F3Q0g7QUF0Q25CLDREQUF5RDtBQTRDckQseUJBNUNLLCtCQUFjLENBNENMO0FBM0NsQix3REFBaUQ7QUE0QzdDLHVCQTVDRyxzQkFBWSxDQTRDSDtBQTNDaEIsNERBQXFEO0FBeUNqRCx5QkF6Q0csd0JBQWMsQ0F5Q0g7QUF4Q2xCLHdEQUFpRDtBQWtCN0MsdUJBbEJHLHNCQUFZLENBa0JIO0FBakJoQixrRUFBMkQ7QUFnQ3ZELDRCQWhDRywyQkFBaUIsQ0FnQ0g7QUEvQnJCLHNEQUErQztBQXFDM0Msc0JBckNHLHFCQUFXLENBcUNIO0FBcENmLGdFQUF5RDtBQVlyRCwyQkFaRywwQkFBZ0IsQ0FZSDtBQVhwQixnREFBeUM7QUFVckMsbUJBVkcsa0JBQVEsQ0FVSDtBQVJaLHVDQUFnQztBQTRCNUIsa0JBNUJHLGlCQUFPLENBNEJIO0FBM0JYLDJEQUFvRDtBQStCaEQseUJBL0JHLHdCQUFjLENBK0JIO0FBOUJsQix5REFBa0Q7QUE2QjlDLHdCQTdCRyx1QkFBYSxDQTZCSDtBQTVCakIsaURBQTBDO0FBMkJ0QyxvQkEzQkcsbUJBQVMsQ0EyQkg7QUF6QmIseUNBQTBDO0FBaUJ0QyxlQWpCSyxlQUFJLENBaUJMO0FBREosaUJBaEJXLGlCQUFNLENBZ0JYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENsdXN0ZXJXUyBmcm9tICdjbHVzdGVyd3MnO1xuaW1wb3J0IHsgYnVpbGRQcm92aWRlck1vZHVsZSB9IGZyb20gJ2ludmVyc2lmeS1iaW5kaW5nLWRlY29yYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBhbGwsXG4gICAgY29udHJvbGxlciwgY29va2llcywgaHR0cERlbGV0ZSwgaHR0cEdldCwgaHR0cEhlYWQsIGh0dHBNZXRob2QsIGh0dHBQYXRjaCwgaHR0cFBvc3QsIGh0dHBQdXQsXG4gICAgSW52ZXJzaWZ5S29hU2VydmVyLCBuZXh0LCBxdWVyeVBhcmFtLCByZXF1ZXN0LCByZXF1ZXN0Qm9keSxcbiAgICByZXF1ZXN0SGVhZGVycywgcmVxdWVzdFBhcmFtLCByZXNwb25zZSwgVFlQRVxufSBmcm9tICdpbnZlcnNpZnkta29hLXV0aWxzJztcbmltcG9ydCAqIGFzIGJvZHlQYXJzZXIgZnJvbSAna29hLWJvZHlwYXJzZXInO1xuaW1wb3J0ICogYXMgand0IGZyb20gJ2tvYS1qd3QnO1xuaW1wb3J0ICogYXMgbG9nNGpzIGZyb20gJ2tvYS1sb2c0JztcbmltcG9ydCB2YWxpZGF0ZSBmcm9tICdrb2EtcmVxLXZhbGlkYXRvcic7XG5pbXBvcnQgKiBhcyBSb3V0ZXIgZnJvbSAna29hLXJvdXRlcic7XG5pbXBvcnQgKiBhcyBjb3JzIGZyb20gJ2tvYTItY29ycyc7XG5pbXBvcnQgeyBCYXNlQ29uc3RhbnQgfSBmcm9tICcuL2NvbmZpZy9CYXNlQ29uc3RhbnQnO1xuaW1wb3J0IHsgQmFzZUh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnLi9jb25maWcvQmFzZUh0dHBTdGF0dXNDb2RlJztcbmltcG9ydCB7IFNRTFNlcnZlclR5cGUgfSBmcm9tICcuL2NvbmZpZy9lbnVtLlNRTFNlcnZlclR5cGUnO1xuaW1wb3J0IEdTZXJ2ZXIgZnJvbSAnLi9HU2VydmVyJztcbmltcG9ydCB7IGF1dG9Qcm92aWRlLCBjb250YWluZXIsIGluamVjdCwgcHJvdmlkZSwgcHJvdmlkZU5hbWVkIH0gZnJvbSAnLi9pb2MvaW9jJztcbmltcG9ydCBJb2NUcmFjZXIgZnJvbSAnLi9pb2MvaW9jVHJhY2VyJztcbmltcG9ydCBBbnlFbnRpdHkgZnJvbSAnLi9tb2RlbHMvQW55RW50aXR5JztcbmltcG9ydCBCYXNlQ29udHJvbGxlciBmcm9tICcuL21vZGVscy9CYXNlQ29udHJvbGxlcic7XG5pbXBvcnQgQmFzZUVudGl0eSBmcm9tICcuL21vZGVscy9CYXNlRW50aXR5JztcbmltcG9ydCBCYXNlRXhjZXB0aW9ucyBmcm9tICcuL21vZGVscy9CYXNlRXhjZXB0aW9ucyc7XG5pbXBvcnQgQmFzZVJlZGlzSGFzaFpudGl0eSBmcm9tICcuL21vZGVscy9CYXNlUmVkaXNIYXNoWm50aXR5JztcbmltcG9ydCBCYXNlUmVwb3NpdG9yeSBmcm9tICcuL21vZGVscy9CYXNlUmVwb3NpdG9yeSc7XG5pbXBvcnQgQmFzZVJlc3BvbnNlIGZyb20gJy4vbW9kZWxzL0Jhc2VSZXNwb25zZSc7XG5pbXBvcnQgQmFzZVNlcnZpY2UgZnJvbSAnLi9tb2RlbHMvQmFzZVNlcnZpY2UnO1xuaW1wb3J0IEJhc2VTb2NrZXRDb250cm9sbGVyIGZyb20gJy4vbW9kZWxzL0Jhc2VTb2NrZXRDb250cm9sbGVyJztcbmltcG9ydCBCYXNlVXNlckluZm8gZnJvbSAnLi9tb2RlbHMvQmFzZVVzZXJJbmZvJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vbW9kZWxzL0RlY29yYXRvcnMnO1xuaW1wb3J0IERvY0NoYW5nZWQgZnJvbSAnLi9tb2RlbHMvRG9jQ2hhbmdlZCc7XG5pbXBvcnQgR0hlYXJ0YmVhdHMgZnJvbSAnLi9tb2RlbHMvR0hlYXJ0YmVhdHMnO1xuaW1wb3J0IEh0dHBJbml0U2V0dGluZyBmcm9tICcuL21vZGVscy9IdHRwSW5pdFNldHRpbmcnO1xuaW1wb3J0IElCYXNlQ29udGV4dCBmcm9tICcuL21vZGVscy9JQmFzZUNvbnRleHQnO1xuaW1wb3J0IHsgTGlic0V4Y2VwdGlvbnMgfSBmcm9tICcuL21vZGVscy9MaWJzRXhjZXB0aW9ucyc7XG5pbXBvcnQgTXlzcWxDb250ZXh0IGZyb20gJy4vbW9kZWxzL015U3FsQ29udGV4dCc7XG5pbXBvcnQgTm90SW1wbGVtZW50ZWQgZnJvbSAnLi9tb2RlbHMvTm90SW1wbGVtZW50ZWQnO1xuaW1wb3J0IFJlZGlzQ29udGV4dCBmcm9tICcuL21vZGVscy9SZWRpc0NvbnRleHQnO1xuaW1wb3J0IFNvY2tldEluaXRTZXR0aW5nIGZyb20gJy4vbW9kZWxzL1NvY2tldEluaXRTZXR0aW5nJztcbmltcG9ydCBUcmFuc2FjdGlvbiBmcm9tICcuL21vZGVscy9UcmFuc2FjdGlvbic7XG5pbXBvcnQgV2ViU29ja2V0Q29udGV4dCBmcm9tICcuL21vZGVscy9XZWJTb2NrZXRDb250ZXh0JztcbmltcG9ydCBXc0VudGl0eSBmcm9tICcuL21vZGVscy9Xc0VudGl0eSc7XG5pbXBvcnQgSVNlcnZlckluaXRPbmNlRXZlbnQgZnJvbSAnLi9TZXJ2ZXJFdmVudC9TZXJ2ZXJJbml0T25jZUV2ZW50JztcbmltcG9ydCBTU2VydmVyIGZyb20gJy4vU1NlcnZlcic7XG5pbXBvcnQgQmFzZURhdGFIZWxwZXIgZnJvbSAnLi91dGlscy9CYXNlRGF0YUhlbHBlcic7XG5pbXBvcnQgQmFzZVNRTEhlbHBlciBmcm9tICcuL3V0aWxzL0Jhc2VTUUxIZWxwZXInO1xuaW1wb3J0IEJhc2VVdGlscyBmcm9tICcuL3V0aWxzL0Jhc2VVdGlscyc7XG5pbXBvcnQgeyBJUXVlcnlPcHRpb25zIH0gZnJvbSAnLi91dGlscy9EYW9PcGVyYXRvcic7XG5pbXBvcnQgeyBJbml0LCBXb3JrZXIgfSBmcm9tICcuL1dTU2VydmVyJztcblxuZXhwb3J0IHtcbiAgICBXc0VudGl0eSxcbiAgICBXZWJTb2NrZXRDb250ZXh0LFxuICAgIEdIZWFydGJlYXRzLFxuICAgIEJhc2VSZWRpc0hhc2habnRpdHksXG4gICAgUmVkaXNDb250ZXh0LFxuICAgIElvY1RyYWNlcixcbiAgICBjb3JzLFxuICAgIFJvdXRlcixcbiAgICBsb2c0anMsXG4gICAgand0LFxuICAgIGJvZHlQYXJzZXIsXG4gICAgSW52ZXJzaWZ5S29hU2VydmVyLFxuICAgIGJ1aWxkUHJvdmlkZXJNb2R1bGUsXG4gICAgV29ya2VyLFxuICAgIEluaXQsXG4gICAgQ2x1c3RlcldTIGFzIFdTU2VydmVyLFxuICAgIEJhc2VTb2NrZXRDb250cm9sbGVyLFxuICAgIElTZXJ2ZXJJbml0T25jZUV2ZW50LFxuICAgIEdTZXJ2ZXIsXG4gICAgU29ja2V0SW5pdFNldHRpbmcsXG4gICAgU1NlcnZlcixcbiAgICBIdHRwSW5pdFNldHRpbmcsXG4gICAgQmFzZVV0aWxzLFxuICAgIEJhc2VTUUxIZWxwZXIsXG4gICAgQmFzZURhdGFIZWxwZXIsXG4gICAgVHJhbnNhY3Rpb24sXG4gICAgTm90SW1wbGVtZW50ZWQsXG4gICAgTGlic0V4Y2VwdGlvbnMsXG4gICAgTXlzcWxDb250ZXh0LFxuICAgIEJhc2VSZXNwb25zZSxcbiAgICBCYXNlVXNlckluZm8sXG4gICAgQmFzZVNlcnZpY2UsXG4gICAgQmFzZVJlcG9zaXRvcnksXG4gICAgQmFzZUV4Y2VwdGlvbnMsXG4gICAgQmFzZUVudGl0eSxcbiAgICBCYXNlQ29udHJvbGxlcixcbiAgICBEb2NDaGFuZ2VkLFxuICAgIEVudGl0eSxcbiAgICBBbnlFbnRpdHksXG4gICAgQmFzZUh0dHBTdGF0dXNDb2RlLFxuICAgIEJhc2VDb25zdGFudCxcbiAgICBTUUxTZXJ2ZXJUeXBlLFxuICAgIElCYXNlQ29udGV4dCxcbiAgICBJUXVlcnlPcHRpb25zLFxuICAgIGNvbnRhaW5lcixcbiAgICBhdXRvUHJvdmlkZSxcbiAgICBwcm92aWRlLFxuICAgIHByb3ZpZGVOYW1lZCxcbiAgICBpbmplY3QsXG4gICAgY29udHJvbGxlcixcbiAgICBodHRwUG9zdCxcbiAgICBodHRwUHV0LFxuICAgIFRZUEUsXG4gICAgdmFsaWRhdGUsXG4gICAgaHR0cEdldCxcbiAgICBodHRwTWV0aG9kLFxuICAgIGh0dHBQYXRjaCxcbiAgICBodHRwSGVhZCxcbiAgICBhbGwsXG4gICAgaHR0cERlbGV0ZSxcbiAgICByZXF1ZXN0LFxuICAgIHJlc3BvbnNlLFxuICAgIHJlcXVlc3RQYXJhbSxcbiAgICBxdWVyeVBhcmFtLFxuICAgIHJlcXVlc3RCb2R5LFxuICAgIHJlcXVlc3RIZWFkZXJzLFxuICAgIGNvb2tpZXMsXG4gICAgbmV4dFxufTtcbiJdfQ==
\No newline at end of file