isite 2022.9.17 → 2022.9.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/client-side/app.js +2 -3
- package/apps/client-side/site_files/css/bootstrap5-addon.css +2 -2
- package/apps/client-side/site_files/css/effect.css +6 -0
- package/apps/client-side/site_files/css/layout.css +39 -17
- package/apps/client-side/site_files/css/modal.css +12 -1
- package/apps/client-side/site_files/html/directive/i-checkbox.html +1 -1
- package/apps/client-side/site_files/js/app.js +3 -0
- package/apps/client-side/site_files/js/bootstrap-5-directive.js +1 -5
- package/apps/client-side/site_files/js/directive.js +1 -1
- package/apps/client-side/site_files/js/last.js +8 -3
- package/apps/client-side/site_files/js/site.js +34 -2
- package/index.js +1 -16
- package/isite_files/html/browser.html +1 -1
- package/lib/collection.js +810 -809
- package/lib/mongodb.js +8 -9
- package/lib/parser.js +27 -13
- package/lib/routing.js +11 -7
- package/lib/security.js +4 -10
- package/lib/session.js +149 -136
- package/lib/sessions.js +84 -26
- package/lib/storage.js +97 -104
- package/lib/ws.js +225 -221
- package/object-options/index.js +2 -2
- package/object-options/lib/fn.js +5 -2
- package/package.json +2 -2
- package/server.md +21 -0
- package/lib/setting.js +0 -59
package/apps/client-side/app.js
CHANGED
|
@@ -182,7 +182,6 @@ module.exports = function (site) {
|
|
|
182
182
|
],
|
|
183
183
|
});
|
|
184
184
|
|
|
185
|
-
|
|
186
185
|
site.post({ name: '/x-api/upload/image', public: true }, (req, res) => {
|
|
187
186
|
site.createDir(site.options.upload_dir + '/' + req.headers['folder'], () => {
|
|
188
187
|
site.createDir(site.options.upload_dir + '/' + req.headers['folder'] + '/images', () => {
|
|
@@ -192,7 +191,7 @@ module.exports = function (site) {
|
|
|
192
191
|
};
|
|
193
192
|
let file = req.files.fileToUpload;
|
|
194
193
|
if (file) {
|
|
195
|
-
let newName = 'image_' +
|
|
194
|
+
let newName = 'image_' + new Date().getTime().toString() + Math.random().toString() + site.path.extname(file.originalFilename);
|
|
196
195
|
let newpath = site.path.resolve(site.options.upload_dir + '/' + req.headers['folder'] + '/images/' + newName);
|
|
197
196
|
site.mv(file.filepath, newpath, function (err) {
|
|
198
197
|
if (err) {
|
|
@@ -234,7 +233,7 @@ module.exports = function (site) {
|
|
|
234
233
|
res.json(response);
|
|
235
234
|
return;
|
|
236
235
|
}
|
|
237
|
-
let newName = 'file_' + (new Date().getTime().toString() + Math.random().toString())
|
|
236
|
+
let newName = 'file_' + (new Date().getTime().toString() + Math.random().toString()) + site.path.extname(file.originalFilename);
|
|
238
237
|
let newpath = site.path.resolve(site.options.upload_dir + '/' + req.headers['folder'] + '/files/' + newName);
|
|
239
238
|
site.mv(file.filepath, newpath, function (err) {
|
|
240
239
|
if (err) {
|
|
@@ -52,6 +52,10 @@ h5 {
|
|
|
52
52
|
visibility: collapse;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
.mobile {
|
|
56
|
+
display: none !important;
|
|
57
|
+
}
|
|
58
|
+
|
|
55
59
|
.container {
|
|
56
60
|
display: block !important;
|
|
57
61
|
width: 100% !important;
|
|
@@ -90,7 +94,7 @@ h5 {
|
|
|
90
94
|
padding: 0;
|
|
91
95
|
margin: 0;
|
|
92
96
|
float: var(--float);
|
|
93
|
-
display: inline;
|
|
97
|
+
display: inline-block !important;
|
|
94
98
|
}
|
|
95
99
|
.col-1,
|
|
96
100
|
.col-2,
|
|
@@ -108,7 +112,7 @@ h5 {
|
|
|
108
112
|
padding: 0;
|
|
109
113
|
margin: 0;
|
|
110
114
|
float: var(--float);
|
|
111
|
-
display: inline;
|
|
115
|
+
display: inline-block !important;
|
|
112
116
|
}
|
|
113
117
|
|
|
114
118
|
.col1 {
|
|
@@ -207,6 +211,36 @@ h5 {
|
|
|
207
211
|
width: calc(11.9 / 12 * 100%) !important;
|
|
208
212
|
}
|
|
209
213
|
|
|
214
|
+
|
|
215
|
+
/* Mobile */
|
|
216
|
+
@media screen and (max-width: 480px) {
|
|
217
|
+
div , .row , fieldset ,.container{
|
|
218
|
+
max-width: 100vw !important;
|
|
219
|
+
margin: 0 !important;
|
|
220
|
+
}
|
|
221
|
+
.col1,
|
|
222
|
+
.col2,
|
|
223
|
+
.col3,
|
|
224
|
+
.col4,
|
|
225
|
+
.col5,
|
|
226
|
+
.col6,
|
|
227
|
+
.col7,
|
|
228
|
+
.col8,
|
|
229
|
+
.col9 {
|
|
230
|
+
vertical-align: top;
|
|
231
|
+
width: calc(12 / 12 * 100%) !important;
|
|
232
|
+
max-width: 100vw;
|
|
233
|
+
}
|
|
234
|
+
.mobile {
|
|
235
|
+
display: block !important;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.desktop {
|
|
239
|
+
display: none !important;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
}
|
|
243
|
+
|
|
210
244
|
/* Small devices (landscape phones, 576px and down) */
|
|
211
245
|
@media (max-width: 575px) {
|
|
212
246
|
.col1,
|
|
@@ -227,6 +261,7 @@ h5 {
|
|
|
227
261
|
}
|
|
228
262
|
}
|
|
229
263
|
|
|
264
|
+
|
|
230
265
|
/* Medium devices (tablets, 768px and down) */
|
|
231
266
|
@media (max-width: 768px) {
|
|
232
267
|
.col1,
|
|
@@ -249,27 +284,14 @@ h5 {
|
|
|
249
284
|
vertical-align: top;
|
|
250
285
|
width: calc(12 / 12 * 100%) !important;
|
|
251
286
|
}
|
|
252
|
-
.mobile {
|
|
253
|
-
display: none !important;
|
|
254
|
-
}
|
|
255
287
|
}
|
|
256
288
|
|
|
257
289
|
/* X-Large devices (large desktops, 1200px and down) */
|
|
258
290
|
@media (max-width: 1200px) {
|
|
259
|
-
|
|
260
|
-
.col2,
|
|
261
|
-
.col3 {
|
|
262
|
-
vertical-align: top;
|
|
263
|
-
width: calc(12 / 12 * 100%) !important;
|
|
264
|
-
}
|
|
265
|
-
.mobile {
|
|
266
|
-
display: none !important;
|
|
267
|
-
}
|
|
291
|
+
|
|
268
292
|
}
|
|
269
293
|
|
|
270
294
|
/* XX-Large devices (larger desktops, 1400px and down) */
|
|
271
295
|
@media (max-width: 1400px) {
|
|
272
|
-
|
|
273
|
-
display: none !important;
|
|
274
|
-
}
|
|
296
|
+
|
|
275
297
|
}
|
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
padding-bottom: 20px;
|
|
7
7
|
left: 0;
|
|
8
8
|
top: 0;
|
|
9
|
+
right: 0;
|
|
9
10
|
width: 100% !important;
|
|
10
11
|
height: 100% !important;
|
|
12
|
+
max-width: 100% !important;
|
|
11
13
|
background-color: var(--modal-background) !important;
|
|
12
14
|
overflow: auto;
|
|
13
15
|
}
|
|
@@ -19,7 +21,7 @@
|
|
|
19
21
|
background-color: var(--modal-content-background);
|
|
20
22
|
margin: auto;
|
|
21
23
|
padding: 0;
|
|
22
|
-
width:
|
|
24
|
+
width: 90vw;
|
|
23
25
|
height: auto !important;
|
|
24
26
|
box-shadow: 0 4px 8px 0 var(--modal-box-shadow-color), 0 6px 20px 0 var(--modal-box-shadow-color);
|
|
25
27
|
-webkit-animation-name: var(--modal-animation-name);
|
|
@@ -241,3 +243,12 @@
|
|
|
241
243
|
opacity: 1;
|
|
242
244
|
}
|
|
243
245
|
}
|
|
246
|
+
|
|
247
|
+
/* Mobile */
|
|
248
|
+
@media screen and (max-width: 480px) {
|
|
249
|
+
.modal.small .modal-content,
|
|
250
|
+
.modal-content.small {
|
|
251
|
+
width: 90vw;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<div class="form-check">
|
|
2
|
-
<input ng-change="changed()" ng-disabled="
|
|
2
|
+
<input ng-change="changed()" ng-disabled="ngDisabled" class="form-check-input" type="checkbox" ng-model="ngModel" id="{{id2}}" />
|
|
3
3
|
<label class="form-check-label" for="{{id2}}"> {{label}} </label>
|
|
4
4
|
</div>
|
|
@@ -71,15 +71,11 @@ app.directive('iCheckbox', function ($timeout) {
|
|
|
71
71
|
scope: {
|
|
72
72
|
label: '@',
|
|
73
73
|
id2: '@',
|
|
74
|
+
ngDisabled: '@',
|
|
74
75
|
ngModel: '=',
|
|
75
76
|
ngChange: '&',
|
|
76
77
|
},
|
|
77
78
|
link: function ($scope, element, attrs, ctrl) {
|
|
78
|
-
if (typeof attrs.disabled !== 'undefined') {
|
|
79
|
-
$scope.disabled = 'disabled';
|
|
80
|
-
} else {
|
|
81
|
-
$scope.disabled = '';
|
|
82
|
-
}
|
|
83
79
|
$scope.id2 = $scope.id2 || 'input_' + Math.random().toString().replace('0.', '');
|
|
84
80
|
$scope.changed = function () {
|
|
85
81
|
$timeout(() => {
|
|
@@ -1553,7 +1553,7 @@ app.directive('iFiles', [
|
|
|
1553
1553
|
<h2>
|
|
1554
1554
|
<a class="btn default bg-blue" href="{{f.url}}"> <i class="fa fa-2x fa-download white"></i> </a>
|
|
1555
1555
|
<a ng-if="viewOnly !== !0" class="btn default bg-red" ng-click="deleteFile(f)"> <i class="fa fa-trash white"></i> </a>
|
|
1556
|
-
<span> {{f
|
|
1556
|
+
<span> {{f}} </span>
|
|
1557
1557
|
</h2>
|
|
1558
1558
|
</div>
|
|
1559
1559
|
</div>
|
|
@@ -102,6 +102,23 @@
|
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
104
|
|
|
105
|
+
site.zoomNumber = parseInt(localStorage.getItem('zoomNumber') || 100);
|
|
106
|
+
site.zoom = function (op) {
|
|
107
|
+
if (op == '+') {
|
|
108
|
+
site.zoomNumber += 25;
|
|
109
|
+
} else if (op == '-') {
|
|
110
|
+
site.zoomNumber -= 25;
|
|
111
|
+
} else if (op == '0') {
|
|
112
|
+
} else {
|
|
113
|
+
site.zoomNumber = 100;
|
|
114
|
+
}
|
|
115
|
+
localStorage.setItem('zoomNumber', site.zoomNumber.toString());
|
|
116
|
+
document.body.style.zoom = site.zoomNumber + '%';
|
|
117
|
+
};
|
|
118
|
+
site.onLoad(() => {
|
|
119
|
+
site.zoom('0');
|
|
120
|
+
});
|
|
121
|
+
|
|
105
122
|
site.printerList = [];
|
|
106
123
|
site.getPrinters = function () {
|
|
107
124
|
if (window.SOCIALBROWSER && SOCIALBROWSER.currentWindow.webContents.getPrintersAsync) {
|
|
@@ -574,7 +591,7 @@
|
|
|
574
591
|
tablinks[i].className = tablinks[i].className.replace(' active', '');
|
|
575
592
|
}
|
|
576
593
|
document.querySelectorAll(tabContentSelector + '.tab-content').forEach((el) => {
|
|
577
|
-
el.style.display = '
|
|
594
|
+
el.style.display = 'block';
|
|
578
595
|
});
|
|
579
596
|
|
|
580
597
|
if (e) {
|
|
@@ -715,6 +732,15 @@
|
|
|
715
732
|
ar: 'اكتب البريد الالكترونى بطريقة صحيحة',
|
|
716
733
|
});
|
|
717
734
|
}
|
|
735
|
+
} else if (vl.like('web') || vl.like('url')) {
|
|
736
|
+
if (el.nodeName === 'INPUT' && (!el.value || !site.isURL(el.value))) {
|
|
737
|
+
el.classList.add('is-invalid');
|
|
738
|
+
res.ok = !1;
|
|
739
|
+
res.messages.push({
|
|
740
|
+
en: 'Write Valid Web address',
|
|
741
|
+
ar: 'اكتب رابط الموقع بطريقة صحيحة',
|
|
742
|
+
});
|
|
743
|
+
}
|
|
718
744
|
} else {
|
|
719
745
|
}
|
|
720
746
|
});
|
|
@@ -728,7 +754,13 @@
|
|
|
728
754
|
}
|
|
729
755
|
return false;
|
|
730
756
|
};
|
|
731
|
-
|
|
757
|
+
site.isURL = function (str) {
|
|
758
|
+
var pattern = new RegExp(
|
|
759
|
+
'^(https?:\\/\\/)?' + '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + '((\\d{1,3}\\.){3}\\d{1,3}))' + '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + '(\\?[;&a-z\\d%_.~+=-]*)?' + '(\\#[-a-z\\d_]*)?$',
|
|
760
|
+
'i'
|
|
761
|
+
);
|
|
762
|
+
return !!pattern.test(encodeURI(str));
|
|
763
|
+
};
|
|
732
764
|
let numbers = [
|
|
733
765
|
{
|
|
734
766
|
n: 1,
|
package/index.js
CHANGED
|
@@ -25,11 +25,8 @@ module.exports = function init(options) {
|
|
|
25
25
|
____0.nodemailer = require('nodemailer');
|
|
26
26
|
____0.child_process = require('child_process');
|
|
27
27
|
____0.cwd = process.cwd();
|
|
28
|
+
____0.setting = {};
|
|
28
29
|
|
|
29
|
-
____0.https.globalAgent.options = {
|
|
30
|
-
key: ____0.fs.readFileSync(__dirname + '/ssl/key.pem'),
|
|
31
|
-
cert: ____0.fs.readFileSync(__dirname + '/ssl/cert.pem'),
|
|
32
|
-
};
|
|
33
30
|
|
|
34
31
|
____0.require = function (file_path) {
|
|
35
32
|
return require(file_path)(____0);
|
|
@@ -164,14 +161,6 @@ module.exports = function init(options) {
|
|
|
164
161
|
____0.all = ____0.onALL = ____0.routing.onALL;
|
|
165
162
|
____0.run = ____0.start = ____0.listen = ____0.routing.start;
|
|
166
163
|
|
|
167
|
-
____0.setting = require('./lib/setting.js')(____0);
|
|
168
|
-
____0.setting.set({
|
|
169
|
-
name: 'loaded',
|
|
170
|
-
value: !0,
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
____0.setting.addList(____0.dir + '/json/setting.json');
|
|
174
|
-
|
|
175
164
|
require('./lib/vars.js')(____0);
|
|
176
165
|
|
|
177
166
|
//DataBase Management Oprations
|
|
@@ -252,10 +241,6 @@ module.exports = function init(options) {
|
|
|
252
241
|
____0.words.addApp(app_path);
|
|
253
242
|
}
|
|
254
243
|
|
|
255
|
-
if (____0.isFileExistsSync(app_path + '/site_files/json/setting.json')) {
|
|
256
|
-
____0.setting.addList(app_path + '/site_files/json/setting.json');
|
|
257
|
-
}
|
|
258
|
-
|
|
259
244
|
if (____0.isFileExistsSync(app_path + '/site_files/json/vars.json')) {
|
|
260
245
|
____0.addVars(app_path + '/site_files/json/vars.json');
|
|
261
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
291417163575273638371317211852754538718715316185431932674514136541388259293423574553218715316151211412512918525741383187153161512114125121141251211572674239325221182761413923744239318621573736325375812153126929517524211412512114125121141285453837754134136147193271253837724738577829342341253737132536276945391352471857534518365321182769455932574559318621565717293837564278365321148587153161512114125121141251211572674239325221188252453836862159426242394771457923752153135445788275423882752934237943383275431576564239426241783667477857564718516521185768433932624138716746782752451836862634817121531269295175242114125121141251211412854718577545183687313937754573131446588679467837732117377142181775433882592114816825547169471857754518368715316151211412512914866142381756295175242114125121157253457832822951752421141251211412512114128543151687313937754573131446588679467837732117377142181775433882592114816825547169431516871531615121141251211412512115727441792362461931871531615121141251211412512114125121141379433882564579466845788265433882573979275746594257465786764658715129341259431932754619268325738674457827624138716741592369477927574653825445787559287175242114125121141251211412512114125147785768421886792558726941781765397927574659425746578676465871512934125943193275461561692574167327738171255412682635617826151281261446841531615121141251211412512114125121141379433882564579466845788265433882573678377347583773377886734378576842731286211842524519275728717524153161512114125121141251211412512114137943388256457946684719238235188652421642624518365129341358473882544718576945531261457913754338866846737151417817654518235241786562211965271453125121141251211412512114125121141251211413544138726541581754437312861531615121141251211412512114125121141251211412512114125121182752451872534138276421197285153161512114125121141251211412512114125121141251211412512118427645582775433886682114516221196527145312512114125121141251211412512114125121141251211412512114125121182769455927694518366845188659241447544138726541581754437313684579315143387671451837674238827521148168255346622871752421141251211412512114125121141251211412512114125121141386287175242114125121141251211412512114125121141251211857582114526946193262457882742558425747182761243413841531615121141251211412512114125121141251211412512114125121184257471827612418867147185769455926684739236525141384211876694218368321144754457923742373715146583756433923574179318321144758457872654579465921197562153161512114125121141251211412512114125121141251211412512114125121141268471852574553516146583774461886684678366221157587211923574679136945592757255932574819316124345627145312512114125121141251211412512114125121141251211412512114125121148275431837682414527542395275243412862953138415316151211412512114125121141251211412512114125121141251211412512114125121141251433841512418867147185769455926684719577142341286293575512379275446585771471446622119652714531251211412512114125121141251211412512114125121141251211412512114125121141251211412514758177321182776467932694537275446585771471412862118326941793767423882752558277342381775423637654238765745593161237927544658577147144662287175242114125121141251211412512114125121141251211412512114125121141251211412512114125121141354473927754578763541792362461931684338315129341369461932624578827425585756287175242114125121141251211412512114125121141251211412512114125121141251211412512114125121141354473927754578763541792362461931684338826842392321371676262115755147183781471565271453125121141251211412512114125121141251211412512114125121141251211412512114125121141251421886544738765745593168463937574659573542387257417932694653515943183752421446622558177146183768421627614338725624182776467932694537275446585771471456841531615121141251211412512114125121141251211412512114125121141251211412512114125121141251211827524518725341382764241456841531615121141251211412512114125121141251211412512114125121141251211412512114125149317524211412512114125121141251211412512114125121141251211412512114125149345684153161512114125121141251211412512114125121141251493413574519275721196527145312512114125121141251211412512114125121141251211412514338415124188671471857694559266847195771423412862935755123792754465857714714466221196527145312512114125121141251211412512114125121141251211412512114125121194252465313544739277545787635417923624619315129341356457827764538376847148254465837524718371745183767423882752414477441792362461931592435652714531251211412512114125121141251211412512114125121141251211412512118277646793269453727544658577147148262421412862118867147185769455926684338318415316151211412512114125121141251211412512114125121141251211412512114135447392775457876354179236246193168467923542115755145791375433886684673827646587184153161512114125121141251211412512114125121141251211412512114125121141354473927754578763541792362461931684578826545781756211575514178176545182352417865841531615121141251211412512114125121141251211412512114125121141251211413564578277645383768471482724738377348372757451837544718867324144761423817562373566841391371423882563178526245183161417937744718866736782773433913752435652714531251211412512114125121141251211412512114125121141251493175242114125121141251211412512114125121141251211975271453125121141251211412512114125121197584153161271453125121141251211412512114125121184276455827754338866821182761423827643678377347583773367932524719377424145651487175242114125121141251211412512114125121141251211947624558326947738275465957264578175632585765423451271453125121141251211412512114125121141251211412512114125148717524211412512114125121141251211412512114125121141251211412512114125147392365285313694558726245583749467837734758377339793773451412642114466943592669467932524719377425586274297942574659276245788186237312642116325247183668455886792414566515316151211412512114125121141251211412512114125121141251211412512114137548391357285312594678277343391375237371271453125121141251211412512114125121141251211412512114125121141251211857562853125946793252471937743973465124731316413932572558826947735162251275242114125121141251211412512114125121141251211412512114125121141251425837754178518321193273473836651531615121141251211412512114125121141251211412512114125121197565153161512114125121141251211412512114125121141251211412512114516221157587211965271453125121141251211412512114125121141251211412512114125121141251211857582114527943388256457946684578826543388257367837734758377337788673437857684273565148717524211412512114125121141251211412512114125121141251211412512114125121141251211927754139237535381762455727574659425746535162287175242114125121141251211412512114125121141251211412512114125121141251493413574519275721196527145312512114125121141251211412512114125121141251211412512114125121141251211413744718177347167662465923694657275746594257465351622871752421141251211412512114125121141251211412512114125121141251211412514931752421141251211412512114125121141251211412512114125121141386251275242114125121141251211412512114125121141251211456841531615121141251211412512114125121141386153161271453125121141251211412512114125121184276455827754338866821192775413923753538577346588673367837734758377324145651487175242114125121141251211412512114125121141251211857582114515247785768421886792558276543383768471413854914125247785768421886792558276543383768471482534139276241768676461832524718366221196527145312512114125121141251211412512114125121141251211412514778576842188679255932734836726941383218433872572419652714531251211412512114125121141251211412512114125121141251211412512119377345156151237852754719137428538569465817792558476247185276415937744239235445788275423882752558276945348652415927764559277541392169467876524659316741391371467386674138576825782373457947744239216946785775423786584338725746738663467386534139276241738263467346651531615121141251211412512114125121141251211412512114125121141251211413754839135728531259467827734339137523737127145312512114125121141251211412512114125121141251211412512114125121185756285312594158177443382667467827734339137523737127145312512114125121141251211412512114125121141251211412512114125121184257471827612853137546593757251275242114125121141251211412512114125121141251211412512114138624356527145312512114125121141251211412512114125121141386153161512114125121141251211412512114138615316127145312512114125121141251211412512118427645582775433886682119277541392375353817624557275746594257465351622119652714531251211412512114125121141251211412512114136242531261213947624558326947738254451857574559315149197151213947624558326947738254451857574559316841581774433827494739135641393257243413841531615121141251211412512114125121141251211412512114125121194762455832694773827546595726457817563258576542345284153161512114125121141251211412512114125121141251211412512114125121141376465871832118866845185768423786744239237842392349473923652114655123738663467386534139276241738263467486784239237443388668293446512473131641393257255882694773516225127524211412512114125121141251211412512114125121141251211412512114125147195771423561512379275446585771471446651531615121141251211412512114125121141251211412512114125121141251211413624215615123782352467857542539275446585771471446651531615121141251211412512114125121141251211412512114125121141251211413584239325443156151471923764234712714531251211412512114125121141251211412512114125121141251493456841531615121141251211412512114125121141251211412514931752421141251211412512114125121141251493175241531615121141251211412512114125121141354431837544376275746594257465727754139327646735162287175242114125121141251211412512114125146783775343882754239237841387161241456512935815148717524211412512114125121141251211412512114125121194762455832694773826945587262455837354239237842392339457923644338825921157551425817654678368415316151211412512114125121141251211412512114125141785257417867354239237842392335471817754739266124356527145312512114125121141251211412512119756521151671261512512453127826141263211526712435652714517524153161512114125121141251211571694678277343391375295175242114125121157169415886564835812714547169431932674515812714519191
|
|
1
|
+
2914171635752736383713172118527545387187153161854319326745141365413882592934235745532187153161512115726142381756295175242114125121157267423932522118276141392374423931862157373632537581215312692951752421141251211572674239325221185275471912674239177643394186215751673736166731788667461817754338236542342151417886684718376847157553343636864238325942342151257481271453125121141285453837754134136841387657293423784338377946188673471421514178866847183768471575534778575647185186421837784338275725394762421932612514136245585775433817652539275441387257293516682614215125748127145312512114128547185775451836873139377545731314465886794678377321173771421817754338825921148168255471694718577545183687153161512115716943183752421581271453125129182369421956871531615121141251291851722956177647188551315923694779275746531337461832524718576842731268255381852578517229517524211412512115727441792362461931871531615121141251211413794338825645794668457882654338825739792757465942574657867646587151293412594319327546192683257386744578276241387167415923694779275746538254457875592871752421141251211412514778576842188679255872694178176539792757465942574657867646587151293412594319327546156169257416732773817125541268263561782615128126144684153161512114125121141379433882564579466845788265433882573678377347583773377886734378576842731286211842524519275728717524153161512114125121141379433882564579466847192382351886524216426245183651293413584738825447185769455312614579137543388668467371514178176545182352417865622119652714531251211412512114125141781765451823524178655129317524211412512114125121141251211827524518725341382764211972851531615121141251211412512114125142593768417932624578815124145651487175242114125121141251211412512114125141788668467886654234826545784661237827524518725341382764211882694714136245391365423876574559315125538168237356841531615121141251211412512114125149356527145312512114125121141251433841512418867147185769455926684258377541785162211965271453125121141251211412512114135842393254431452694619326245788274255937734514715148731367457832572853125941788673467346652119235742185773423827752853125942588665451886792373138624317524211412512114125121141251211412512559326142388161241923574679136945592757243412862953137342392771457882744234827542395275241456621531615121141251211412512114125121141268471852574553516147183781471456512935815148717524211412512114125121141251211412512114136242531261457913754338866846738275483913572115758629341259467827734339137523735651487175242114125121141251211412512114125121141251211942524653135447392775457876354179236246193151293413564578277645383768471482544658375247183717451837674238827524144774417923624619315924356527145312512114125121141251211412512114125121141354473927754578763541792362461931684338315129341369461932624578827425585756287175242114125121141251211412512114125121141251211827764679326945372754465857714714826245588257465652363536715129341375423952752871752421141251211412512114125121141251211412512118326941793767423882752559177642392382367837654238277545792161237852574138315924348252461913574558321543185765421452544739277545787635417923624619316228717524211412512114125121141251211412512114125121182752451872534138276424145684153161512114125121141251211412512114125121197527145312512114125121141251211412512119756215316151211412512114125121141251211412684178177541785161241837734653565129358151487175242114125121141251211412512114125121141354457882744578725725587269427352574659216228717524211412512114125121141251211412512114135441387265415817544373516228717524211412512114125121141251211412514934568415316151211412512114125121197551423872744234138415316151211412512114125121141251433841512418867147185769455926684719577142341286293575512379275446585771471446622119652714531251211412512114125121141251211942524653135447392775457876354179236246193151293413564578277645383768471482544658375247183717451837674238827524144774417923624619315924356527145312512114125121141251211412512118277646793269453727544658577147148262421412862118867147185769455926684338318415316151211412512114125121141251211413544739277545787635417923624619316846792354211575514579137543388668467382764658718415316151211412512114125121141251211413544739277545787635417923624619316845788265457817562115755141781765451823524178658415316151211412512114125121141251211413564578277645383768471482724738377348372757451837544718867324144761423817562373566841391371423882563178526245183161417937744718866736782773433913752435652714531251211412512114125121141386153161512114125121141251211975271453125121141251211975841531612714531251211412512118427645582775433886682118276142382764367837734758377336793252471937742414565148717524211412512114125121141379433882564579466845788265433882573678377347583773377886734378576842731286211842524519275728717524211412512114125121141379433882564579466847192382351886524216426245183661153161512114125121141251211412514871752421141251211412512114125121141251473923652853136945587262455837494678377347583773397937734514126421144669435926694679325247193774255862742979425746592762457881862373126421163252471836684558867924145665153161512114125121141251211412512114137548391357285312594678277343391375237371271453125121141251211412512114125121185756285312594679325247193774397346512473131641393257255882694773516225127524211412512114125121141251211412514258377541785183211932734738366515316151211412512114125121141251493471271453125121141251211412512114126124341286295313841531615121141251211412512114125121141362425312614778576842188679255886684518576842372757465942574657476946586762455846622119652714531251211412512114125121141251211412514679325246593227413857683678377347583773241456841531615121141251211412512114125121141386211837654678365148717524211412512114125121141251211412512114137447181773471676624659236946572757465942574653516228717524211412512114125121141251211412514931752421141251211412512114125121197527145312512114125121141251243565271453125121141251211975271451752421141251211412514259376841793262457881514679325246593227433923734579233542392378423921612434138415316151211412512114125121185758211451524778576842188679255827654338376847141385491412524778576842188679255827654338376847148253413927624176867646183252471836622119652714531251211412512114125121141379433882564579466847192382351886524216426245183661487175242114125121141251211412512114125147392365285312594319327546192683257386734139466842785775431937534739275746582769455932574559316841788667257817534679376846793252465386744538177347147652461913742578765243388169415923694779275746538674433932573978426245183774257862742578235246785754255862742373712714531251211412512114125121141251211932824618368321144774417923624619315925127524211412512114125121141251211412514338318321144753413927624173767441792362461931592512752421141251211412512114125121141251425837754178518321193273473836651531615121141251211412512114125149345684153161512114125121141251211975271453125121141251211975271451752421141251211412514259376841793262457881514679325246593227413857683678377347583773241456514871752421141251211412512114136242531261213947624558326947738254451857574559315149197151213947624558326947738254451857574559316841581774433827494739135641393257243413841531615121141251211412512114125147785768421886792559327348367269413832184338725724196527145312512114125121141251211412512119377345156151457882654338825739792757465942574657867646587151247312592578627425782352467857542558627429794257465927624578818623731264211632524718366845588679241456651531615121141251211412512114125121141375483913572853125946782773433913752373712714531251211412512114125121141251211857562853125941581774433826674678277343391375237371271453125121141251211412512114125121184257471827612853137546593757251275242114125121141251211412512119756228717524211412512114125121141386153161512114125121141386153161271453125121141251211827614238276436783773475837733679325247193774241456841531615121141251211413744239322345593257465942524514516124341286295313841531615121141251211412512118276142382764367837734758377336793252471937742414568415316151211412512114138625141272261512712114615127541251245312782614568415316151211412512914867441792362461931871531615121157169415886564835812714547169431932674515812714519191
|