apostrophe 2.221.0 → 2.221.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.
- package/CHANGELOG.md +12 -0
- package/lib/modules/apostrophe-caches/index.js +23 -1
- package/lib/modules/apostrophe-soft-redirects/index.js +21 -14
- package/package.json +1 -1
- package/test/caches.js +29 -0
- package/test/soft-redirects.js +16 -3
- package/.nyc_output/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +0 -1
- package/.nyc_output/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +0 -1
- package/.nyc_output/99acae99-becc-463d-ba35-9333f88d2694.json +0 -1
- package/.nyc_output/d071f9e0-3b11-44e6-9817-69f184dd064d.json +0 -1
- package/.nyc_output/ed000bec-7ff7-49bf-a109-d17bfe883433.json +0 -1
- package/.nyc_output/processinfo/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +0 -1
- package/.nyc_output/processinfo/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +0 -1
- package/.nyc_output/processinfo/99acae99-becc-463d-ba35-9333f88d2694.json +0 -1
- package/.nyc_output/processinfo/d071f9e0-3b11-44e6-9817-69f184dd064d.json +0 -1
- package/.nyc_output/processinfo/ed000bec-7ff7-49bf-a109-d17bfe883433.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/coverage/a3/defaults.js.html +0 -253
- package/coverage/a3/index.html +0 -131
- package/coverage/a3/index.js.html +0 -2338
- package/coverage/a3/lib/escape-host.js.html +0 -109
- package/coverage/a3/lib/index.html +0 -176
- package/coverage/a3/lib/mongodb-connect.js.html +0 -250
- package/coverage/a3/lib/moog-require.js.html +0 -790
- package/coverage/a3/lib/moog.js.html +0 -1711
- package/coverage/a3/lib/opentelemetry.js.html +0 -517
- package/coverage/a3/modules/@apostrophecms/admin-bar/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/admin-bar/index.js.html +0 -931
- package/coverage/a3/modules/@apostrophecms/any-doc-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/any-doc-type/index.js.html +0 -115
- package/coverage/a3/modules/@apostrophecms/any-page-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/any-page-type/index.js.html +0 -1105
- package/coverage/a3/modules/@apostrophecms/archive-page/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/archive-page/index.js.html +0 -97
- package/coverage/a3/modules/@apostrophecms/area/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/area/index.js.html +0 -2104
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/area.js.html +0 -469
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/widget.js.html +0 -286
- package/coverage/a3/modules/@apostrophecms/asset/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/asset/index.js.html +0 -3982
- package/coverage/a3/modules/@apostrophecms/asset/lib/globalIcons.js.html +0 -346
- package/coverage/a3/modules/@apostrophecms/asset/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.scss.js.html +0 -289
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js.html +0 -148
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.es5.js.html +0 -184
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.scss.js.html +0 -238
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/utils.js.html +0 -958
- package/coverage/a3/modules/@apostrophecms/attachment/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/attachment/index.js.html +0 -3676
- package/coverage/a3/modules/@apostrophecms/attachment/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/attachment/lib/legacy-migrations.js.html +0 -205
- package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/rescale.js.html +0 -328
- package/coverage/a3/modules/@apostrophecms/busy/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/busy/index.js.html +0 -145
- package/coverage/a3/modules/@apostrophecms/cache/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/cache/index.js.html +0 -424
- package/coverage/a3/modules/@apostrophecms/db/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/db/index.js.html +0 -640
- package/coverage/a3/modules/@apostrophecms/doc/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/doc/index.js.html +0 -3937
- package/coverage/a3/modules/@apostrophecms/doc/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/doc/lib/legacy-migrations.js.html +0 -622
- package/coverage/a3/modules/@apostrophecms/doc-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/doc-type/index.js.html +0 -8638
- package/coverage/a3/modules/@apostrophecms/doc-type/lib/autocomplete.js.html +0 -319
- package/coverage/a3/modules/@apostrophecms/doc-type/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/email/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/email/index.js.html +0 -301
- package/coverage/a3/modules/@apostrophecms/error/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/error/index.js.html +0 -202
- package/coverage/a3/modules/@apostrophecms/express/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/express/index.js.html +0 -2116
- package/coverage/a3/modules/@apostrophecms/file/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/file/index.js.html +0 -367
- package/coverage/a3/modules/@apostrophecms/file-tag/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/file-tag/index.js.html +0 -127
- package/coverage/a3/modules/@apostrophecms/global/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/global/index.js.html +0 -535
- package/coverage/a3/modules/@apostrophecms/home-page/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/home-page/index.js.html +0 -94
- package/coverage/a3/modules/@apostrophecms/html-widget/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/html-widget/index.js.html +0 -271
- package/coverage/a3/modules/@apostrophecms/http/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/http/index.js.html +0 -976
- package/coverage/a3/modules/@apostrophecms/i18n/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/i18n/index.js.html +0 -2083
- package/coverage/a3/modules/@apostrophecms/image/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/image/index.js.html +0 -1486
- package/coverage/a3/modules/@apostrophecms/image-tag/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/image-tag/index.js.html +0 -127
- package/coverage/a3/modules/@apostrophecms/image-widget/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/image-widget/index.js.html +0 -145
- package/coverage/a3/modules/@apostrophecms/job/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/job/index.js.html +0 -1321
- package/coverage/a3/modules/@apostrophecms/launder/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/launder/index.js.html +0 -124
- package/coverage/a3/modules/@apostrophecms/lock/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/lock/index.js.html +0 -676
- package/coverage/a3/modules/@apostrophecms/login/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/login/index.js.html +0 -2617
- package/coverage/a3/modules/@apostrophecms/migration/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/migration/index.js.html +0 -970
- package/coverage/a3/modules/@apostrophecms/modal/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/modal/index.js.html +0 -193
- package/coverage/a3/modules/@apostrophecms/module/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/module/index.js.html +0 -2500
- package/coverage/a3/modules/@apostrophecms/module/lib/events.js.html +0 -547
- package/coverage/a3/modules/@apostrophecms/module/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/notification/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/notification/index.js.html +0 -1315
- package/coverage/a3/modules/@apostrophecms/oembed/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/oembed/index.js.html +0 -781
- package/coverage/a3/modules/@apostrophecms/oembed/lib/index.html +0 -161
- package/coverage/a3/modules/@apostrophecms/oembed/lib/infogram.js.html +0 -178
- package/coverage/a3/modules/@apostrophecms/oembed/lib/vimeo.js.html +0 -124
- package/coverage/a3/modules/@apostrophecms/oembed/lib/wufoo.js.html +0 -256
- package/coverage/a3/modules/@apostrophecms/oembed/lib/youtube.js.html +0 -322
- package/coverage/a3/modules/@apostrophecms/oembed-field/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/oembed-field/index.js.html +0 -268
- package/coverage/a3/modules/@apostrophecms/page/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/page/index.js.html +0 -6955
- package/coverage/a3/modules/@apostrophecms/page/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/page/lib/legacy-migrations.js.html +0 -568
- package/coverage/a3/modules/@apostrophecms/page-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/page-type/index.js.html +0 -1501
- package/coverage/a3/modules/@apostrophecms/pager/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/pager/index.js.html +0 -232
- package/coverage/a3/modules/@apostrophecms/permission/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/permission/index.js.html +0 -1057
- package/coverage/a3/modules/@apostrophecms/permission/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/permission/lib/legacy-migrations.js.html +0 -160
- package/coverage/a3/modules/@apostrophecms/piece-page-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/piece-page-type/index.js.html +0 -1051
- package/coverage/a3/modules/@apostrophecms/piece-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/piece-type/index.js.html +0 -3103
- package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.js.html +0 -157
- package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.js.html +0 -1363
- package/coverage/a3/modules/@apostrophecms/schema/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/schema/index.js.html +0 -4603
- package/coverage/a3/modules/@apostrophecms/schema/lib/addFieldTypes.js.html +0 -3502
- package/coverage/a3/modules/@apostrophecms/schema/lib/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/schema/lib/joinr.js.html +0 -703
- package/coverage/a3/modules/@apostrophecms/search/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/search/index.js.html +0 -1222
- package/coverage/a3/modules/@apostrophecms/soft-redirect/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/soft-redirect/index.js.html +0 -343
- package/coverage/a3/modules/@apostrophecms/submitted-draft/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/submitted-draft/index.js.html +0 -595
- package/coverage/a3/modules/@apostrophecms/task/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/task/index.js.html +0 -1147
- package/coverage/a3/modules/@apostrophecms/template/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/template/index.js.html +0 -2731
- package/coverage/a3/modules/@apostrophecms/template/lib/bundlesLoader.js.html +0 -559
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/component.js.html +0 -310
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/fragment.js.html +0 -325
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/index.html +0 -146
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/render.js.html +0 -490
- package/coverage/a3/modules/@apostrophecms/template/lib/index.html +0 -131
- package/coverage/a3/modules/@apostrophecms/template/lib/nunjucksLoader.js.html +0 -658
- package/coverage/a3/modules/@apostrophecms/ui/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/ui/index.js.html +0 -181
- package/coverage/a3/modules/@apostrophecms/uploadfs/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/uploadfs/index.js.html +0 -286
- package/coverage/a3/modules/@apostrophecms/url/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/url/index.js.html +0 -733
- package/coverage/a3/modules/@apostrophecms/user/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/user/index.js.html +0 -1684
- package/coverage/a3/modules/@apostrophecms/user/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/user/lib/legacy-migrations.js.html +0 -157
- package/coverage/a3/modules/@apostrophecms/util/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/util/index.js.html +0 -3424
- package/coverage/a3/modules/@apostrophecms/util/lib/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/util/lib/logger.js.html +0 -319
- package/coverage/a3/modules/@apostrophecms/video-widget/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/video-widget/index.js.html +0 -178
- package/coverage/a3/modules/@apostrophecms/widget-type/index.html +0 -116
- package/coverage/a3/modules/@apostrophecms/widget-type/index.js.html +0 -1225
- package/coverage/a3/test-lib/index.html +0 -131
- package/coverage/a3/test-lib/test.js.html +0 -232
- package/coverage/a3/test-lib/util.js.html +0 -373
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -1256
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
|
@@ -1,2083 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for a3/modules/@apostrophecms/i18n/index.js</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../../../index.html">All files</a> / <a href="index.html">a3/modules/@apostrophecms/i18n</a> index.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">66.31% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>189/285</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">63.76% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>139/218</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">75.67% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>28/37</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">66.07% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>187/283</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line medium'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
-
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
-
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
-
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
-
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
-
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
-
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
-
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
-
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
-
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
-
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
-
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
-
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
-
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
-
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
-
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
-
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
-
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
-
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
-
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
-
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
-
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
-
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
|
-
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
-
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
-
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
-
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
-
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
-
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
-
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
-
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
-
<a name='L596'></a><a href='#L596'>596</a>
|
|
662
|
-
<a name='L597'></a><a href='#L597'>597</a>
|
|
663
|
-
<a name='L598'></a><a href='#L598'>598</a>
|
|
664
|
-
<a name='L599'></a><a href='#L599'>599</a>
|
|
665
|
-
<a name='L600'></a><a href='#L600'>600</a>
|
|
666
|
-
<a name='L601'></a><a href='#L601'>601</a>
|
|
667
|
-
<a name='L602'></a><a href='#L602'>602</a>
|
|
668
|
-
<a name='L603'></a><a href='#L603'>603</a>
|
|
669
|
-
<a name='L604'></a><a href='#L604'>604</a>
|
|
670
|
-
<a name='L605'></a><a href='#L605'>605</a>
|
|
671
|
-
<a name='L606'></a><a href='#L606'>606</a>
|
|
672
|
-
<a name='L607'></a><a href='#L607'>607</a>
|
|
673
|
-
<a name='L608'></a><a href='#L608'>608</a>
|
|
674
|
-
<a name='L609'></a><a href='#L609'>609</a>
|
|
675
|
-
<a name='L610'></a><a href='#L610'>610</a>
|
|
676
|
-
<a name='L611'></a><a href='#L611'>611</a>
|
|
677
|
-
<a name='L612'></a><a href='#L612'>612</a>
|
|
678
|
-
<a name='L613'></a><a href='#L613'>613</a>
|
|
679
|
-
<a name='L614'></a><a href='#L614'>614</a>
|
|
680
|
-
<a name='L615'></a><a href='#L615'>615</a>
|
|
681
|
-
<a name='L616'></a><a href='#L616'>616</a>
|
|
682
|
-
<a name='L617'></a><a href='#L617'>617</a>
|
|
683
|
-
<a name='L618'></a><a href='#L618'>618</a>
|
|
684
|
-
<a name='L619'></a><a href='#L619'>619</a>
|
|
685
|
-
<a name='L620'></a><a href='#L620'>620</a>
|
|
686
|
-
<a name='L621'></a><a href='#L621'>621</a>
|
|
687
|
-
<a name='L622'></a><a href='#L622'>622</a>
|
|
688
|
-
<a name='L623'></a><a href='#L623'>623</a>
|
|
689
|
-
<a name='L624'></a><a href='#L624'>624</a>
|
|
690
|
-
<a name='L625'></a><a href='#L625'>625</a>
|
|
691
|
-
<a name='L626'></a><a href='#L626'>626</a>
|
|
692
|
-
<a name='L627'></a><a href='#L627'>627</a>
|
|
693
|
-
<a name='L628'></a><a href='#L628'>628</a>
|
|
694
|
-
<a name='L629'></a><a href='#L629'>629</a>
|
|
695
|
-
<a name='L630'></a><a href='#L630'>630</a>
|
|
696
|
-
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
|
-
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
|
-
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
-
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
-
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
-
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
-
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
-
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
-
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
-
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
-
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
-
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
-
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
-
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
-
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
-
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
-
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
-
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
-
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
-
<a name='L650'></a><a href='#L650'>650</a>
|
|
716
|
-
<a name='L651'></a><a href='#L651'>651</a>
|
|
717
|
-
<a name='L652'></a><a href='#L652'>652</a>
|
|
718
|
-
<a name='L653'></a><a href='#L653'>653</a>
|
|
719
|
-
<a name='L654'></a><a href='#L654'>654</a>
|
|
720
|
-
<a name='L655'></a><a href='#L655'>655</a>
|
|
721
|
-
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
|
-
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
|
-
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
-
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
-
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
-
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
-
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
-
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
-
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
-
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
-
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
-
<a name='L667'></a><a href='#L667'>667</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-yes">90x</span>
|
|
740
|
-
<span class="cline-any cline-yes">90x</span>
|
|
741
|
-
<span class="cline-any cline-yes">90x</span>
|
|
742
|
-
<span class="cline-any cline-yes">90x</span>
|
|
743
|
-
<span class="cline-any cline-yes">90x</span>
|
|
744
|
-
<span class="cline-any cline-yes">90x</span>
|
|
745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-yes">90x</span>
|
|
747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
750
|
-
<span class="cline-any cline-neutral"> </span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-no"> </span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-no"> </span>
|
|
755
|
-
<span class="cline-any cline-no"> </span>
|
|
756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-no"> </span>
|
|
760
|
-
<span class="cline-any cline-neutral"> </span>
|
|
761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
763
|
-
<span class="cline-any cline-no"> </span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-neutral"> </span>
|
|
767
|
-
<span class="cline-any cline-no"> </span>
|
|
768
|
-
<span class="cline-any cline-neutral"> </span>
|
|
769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
770
|
-
<span class="cline-any cline-neutral"> </span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-yes">90x</span>
|
|
773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-neutral"> </span>
|
|
777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-yes">90x</span>
|
|
782
|
-
<span class="cline-any cline-yes">90x</span>
|
|
783
|
-
<span class="cline-any cline-yes">90x</span>
|
|
784
|
-
<span class="cline-any cline-yes">90x</span>
|
|
785
|
-
<span class="cline-any cline-yes">90x</span>
|
|
786
|
-
<span class="cline-any cline-yes">97x</span>
|
|
787
|
-
<span class="cline-any cline-yes">90x</span>
|
|
788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-yes">90x</span>
|
|
790
|
-
<span class="cline-any cline-yes">99x</span>
|
|
791
|
-
<span class="cline-any cline-no"> </span>
|
|
792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
793
|
-
<span class="cline-any cline-yes">99x</span>
|
|
794
|
-
<span class="cline-any cline-no"> </span>
|
|
795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
796
|
-
<span class="cline-any cline-yes">99x</span>
|
|
797
|
-
<span class="cline-any cline-no"> </span>
|
|
798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
799
|
-
<span class="cline-any cline-yes">99x</span>
|
|
800
|
-
<span class="cline-any cline-no"> </span>
|
|
801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
803
|
-
<span class="cline-any cline-yes">90x</span>
|
|
804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
805
|
-
<span class="cline-any cline-yes">90x</span>
|
|
806
|
-
<span class="cline-any cline-no"> </span>
|
|
807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
809
|
-
<span class="cline-any cline-yes">90x</span>
|
|
810
|
-
<span class="cline-any cline-neutral"> </span>
|
|
811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
817
|
-
<span class="cline-any cline-neutral"> </span>
|
|
818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
819
|
-
<span class="cline-any cline-neutral"> </span>
|
|
820
|
-
<span class="cline-any cline-neutral"> </span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-yes">90x</span>
|
|
823
|
-
<span class="cline-any cline-no"> </span>
|
|
824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
825
|
-
<span class="cline-any cline-neutral"> </span>
|
|
826
|
-
<span class="cline-any cline-yes">90x</span>
|
|
827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-neutral"> </span>
|
|
830
|
-
<span class="cline-any cline-yes">90x</span>
|
|
831
|
-
<span class="cline-any cline-yes">90x</span>
|
|
832
|
-
<span class="cline-any cline-yes">90x</span>
|
|
833
|
-
<span class="cline-any cline-neutral"> </span>
|
|
834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
835
|
-
<span class="cline-any cline-yes">90x</span>
|
|
836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
837
|
-
<span class="cline-any cline-neutral"> </span>
|
|
838
|
-
<span class="cline-any cline-yes">90x</span>
|
|
839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
840
|
-
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
842
|
-
<span class="cline-any cline-neutral"> </span>
|
|
843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-neutral"> </span>
|
|
848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
849
|
-
<span class="cline-any cline-neutral"> </span>
|
|
850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
851
|
-
<span class="cline-any cline-neutral"> </span>
|
|
852
|
-
<span class="cline-any cline-yes">78x</span>
|
|
853
|
-
<span class="cline-any cline-yes">78x</span>
|
|
854
|
-
<span class="cline-any cline-yes">3x</span>
|
|
855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
856
|
-
<span class="cline-any cline-yes">75x</span>
|
|
857
|
-
<span class="cline-any cline-yes">75x</span>
|
|
858
|
-
<span class="cline-any cline-no"> </span>
|
|
859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
860
|
-
<span class="cline-any cline-yes">75x</span>
|
|
861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
862
|
-
<span class="cline-any cline-neutral"> </span>
|
|
863
|
-
<span class="cline-any cline-neutral"> </span>
|
|
864
|
-
<span class="cline-any cline-neutral"> </span>
|
|
865
|
-
<span class="cline-any cline-neutral"> </span>
|
|
866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
867
|
-
<span class="cline-any cline-neutral"> </span>
|
|
868
|
-
<span class="cline-any cline-neutral"> </span>
|
|
869
|
-
<span class="cline-any cline-neutral"> </span>
|
|
870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
872
|
-
<span class="cline-any cline-yes">75x</span>
|
|
873
|
-
<span class="cline-any cline-yes">75x</span>
|
|
874
|
-
<span class="cline-any cline-yes">90x</span>
|
|
875
|
-
<span class="cline-any cline-neutral"> </span>
|
|
876
|
-
<span class="cline-any cline-neutral"> </span>
|
|
877
|
-
<span class="cline-any cline-yes">90x</span>
|
|
878
|
-
<span class="cline-any cline-yes">109x</span>
|
|
879
|
-
<span class="cline-any cline-yes">90x</span>
|
|
880
|
-
<span class="cline-any cline-yes">80x</span>
|
|
881
|
-
<span class="cline-any cline-yes">80x</span>
|
|
882
|
-
<span class="cline-any cline-yes">80x</span>
|
|
883
|
-
<span class="cline-any cline-yes">67x</span>
|
|
884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
886
|
-
<span class="cline-any cline-yes">90x</span>
|
|
887
|
-
<span class="cline-any cline-yes">90x</span>
|
|
888
|
-
<span class="cline-any cline-yes">90x</span>
|
|
889
|
-
<span class="cline-any cline-yes">90x</span>
|
|
890
|
-
<span class="cline-any cline-yes">90x</span>
|
|
891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
894
|
-
<span class="cline-any cline-neutral"> </span>
|
|
895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-yes">90x</span>
|
|
898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-yes">787x</span>
|
|
900
|
-
<span class="cline-any cline-yes">787x</span>
|
|
901
|
-
<span class="cline-any cline-yes">787x</span>
|
|
902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
903
|
-
<span class="cline-any cline-no"> </span>
|
|
904
|
-
<span class="cline-any cline-no"> </span>
|
|
905
|
-
<span class="cline-any cline-no"> </span>
|
|
906
|
-
<span class="cline-any cline-no"> </span>
|
|
907
|
-
<span class="cline-any cline-no"> </span>
|
|
908
|
-
<span class="cline-any cline-neutral"> </span>
|
|
909
|
-
<span class="cline-any cline-no"> </span>
|
|
910
|
-
<span class="cline-any cline-no"> </span>
|
|
911
|
-
<span class="cline-any cline-neutral"> </span>
|
|
912
|
-
<span class="cline-any cline-no"> </span>
|
|
913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
914
|
-
<span class="cline-any cline-neutral"> </span>
|
|
915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
916
|
-
<span class="cline-any cline-neutral"> </span>
|
|
917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
918
|
-
<span class="cline-any cline-neutral"> </span>
|
|
919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
920
|
-
<span class="cline-any cline-neutral"> </span>
|
|
921
|
-
<span class="cline-any cline-neutral"> </span>
|
|
922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
923
|
-
<span class="cline-any cline-neutral"> </span>
|
|
924
|
-
<span class="cline-any cline-neutral"> </span>
|
|
925
|
-
<span class="cline-any cline-neutral"> </span>
|
|
926
|
-
<span class="cline-any cline-neutral"> </span>
|
|
927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
928
|
-
<span class="cline-any cline-neutral"> </span>
|
|
929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
931
|
-
<span class="cline-any cline-no"> </span>
|
|
932
|
-
<span class="cline-any cline-no"> </span>
|
|
933
|
-
<span class="cline-any cline-no"> </span>
|
|
934
|
-
<span class="cline-any cline-neutral"> </span>
|
|
935
|
-
<span class="cline-any cline-neutral"> </span>
|
|
936
|
-
<span class="cline-any cline-neutral"> </span>
|
|
937
|
-
<span class="cline-any cline-neutral"> </span>
|
|
938
|
-
<span class="cline-any cline-neutral"> </span>
|
|
939
|
-
<span class="cline-any cline-neutral"> </span>
|
|
940
|
-
<span class="cline-any cline-yes">787x</span>
|
|
941
|
-
<span class="cline-any cline-no"> </span>
|
|
942
|
-
<span class="cline-any cline-no"> </span>
|
|
943
|
-
<span class="cline-any cline-no"> </span>
|
|
944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
945
|
-
<span class="cline-any cline-yes">787x</span>
|
|
946
|
-
<span class="cline-any cline-neutral"> </span>
|
|
947
|
-
<span class="cline-any cline-yes">787x</span>
|
|
948
|
-
<span class="cline-any cline-no"> </span>
|
|
949
|
-
<span class="cline-any cline-neutral"> </span>
|
|
950
|
-
<span class="cline-any cline-yes">787x</span>
|
|
951
|
-
<span class="cline-any cline-neutral"> </span>
|
|
952
|
-
<span class="cline-any cline-yes">787x</span>
|
|
953
|
-
<span class="cline-any cline-yes">787x</span>
|
|
954
|
-
<span class="cline-any cline-neutral"> </span>
|
|
955
|
-
<span class="cline-any cline-yes">3x</span>
|
|
956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
957
|
-
<span class="cline-any cline-no"> </span>
|
|
958
|
-
<span class="cline-any cline-neutral"> </span>
|
|
959
|
-
<span class="cline-any cline-yes">3x</span>
|
|
960
|
-
<span class="cline-any cline-yes">3x</span>
|
|
961
|
-
<span class="cline-any cline-yes">3x</span>
|
|
962
|
-
<span class="cline-any cline-yes">3x</span>
|
|
963
|
-
<span class="cline-any cline-yes">3x</span>
|
|
964
|
-
<span class="cline-any cline-no"> </span>
|
|
965
|
-
<span class="cline-any cline-no"> </span>
|
|
966
|
-
<span class="cline-any cline-no"> </span>
|
|
967
|
-
<span class="cline-any cline-neutral"> </span>
|
|
968
|
-
<span class="cline-any cline-no"> </span>
|
|
969
|
-
<span class="cline-any cline-neutral"> </span>
|
|
970
|
-
<span class="cline-any cline-neutral"> </span>
|
|
971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-no"> </span>
|
|
973
|
-
<span class="cline-any cline-neutral"> </span>
|
|
974
|
-
<span class="cline-any cline-no"> </span>
|
|
975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
976
|
-
<span class="cline-any cline-neutral"> </span>
|
|
977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
978
|
-
<span class="cline-any cline-neutral"> </span>
|
|
979
|
-
<span class="cline-any cline-yes">787x</span>
|
|
980
|
-
<span class="cline-any cline-yes">3x</span>
|
|
981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
982
|
-
<span class="cline-any cline-yes">784x</span>
|
|
983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
984
|
-
<span class="cline-any cline-yes">787x</span>
|
|
985
|
-
<span class="cline-any cline-yes">787x</span>
|
|
986
|
-
<span class="cline-any cline-yes">787x</span>
|
|
987
|
-
<span class="cline-any cline-yes">787x</span>
|
|
988
|
-
<span class="cline-any cline-no"> </span>
|
|
989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
992
|
-
<span class="cline-any cline-yes">787x</span>
|
|
993
|
-
<span class="cline-any cline-yes">787x</span>
|
|
994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-yes">787x</span>
|
|
997
|
-
<span class="cline-any cline-yes">5x</span>
|
|
998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1002
|
-
<span class="cline-any cline-yes">787x</span>
|
|
1003
|
-
<span class="cline-any cline-no"> </span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
-
<span class="cline-any cline-no"> </span>
|
|
1008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
-
<span class="cline-any cline-yes">787x</span>
|
|
1010
|
-
<span class="cline-any cline-yes">787x</span>
|
|
1011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1015
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-no"> </span>
|
|
1019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
-
<span class="cline-any cline-no"> </span>
|
|
1022
|
-
<span class="cline-any cline-no"> </span>
|
|
1023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1026
|
-
<span class="cline-any cline-no"> </span>
|
|
1027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
-
<span class="cline-any cline-no"> </span>
|
|
1029
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
-
<span class="cline-any cline-no"> </span>
|
|
1031
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
-
<span class="cline-any cline-no"> </span>
|
|
1034
|
-
<span class="cline-any cline-no"> </span>
|
|
1035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
-
<span class="cline-any cline-no"> </span>
|
|
1038
|
-
<span class="cline-any cline-no"> </span>
|
|
1039
|
-
<span class="cline-any cline-no"> </span>
|
|
1040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1044
|
-
<span class="cline-any cline-no"> </span>
|
|
1045
|
-
<span class="cline-any cline-no"> </span>
|
|
1046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
-
<span class="cline-any cline-no"> </span>
|
|
1048
|
-
<span class="cline-any cline-no"> </span>
|
|
1049
|
-
<span class="cline-any cline-no"> </span>
|
|
1050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
-
<span class="cline-any cline-no"> </span>
|
|
1054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1055
|
-
<span class="cline-any cline-no"> </span>
|
|
1056
|
-
<span class="cline-any cline-no"> </span>
|
|
1057
|
-
<span class="cline-any cline-no"> </span>
|
|
1058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
-
<span class="cline-any cline-no"> </span>
|
|
1062
|
-
<span class="cline-any cline-no"> </span>
|
|
1063
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1064
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
-
<span class="cline-any cline-no"> </span>
|
|
1067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1074
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1081
|
-
<span class="cline-any cline-no"> </span>
|
|
1082
|
-
<span class="cline-any cline-no"> </span>
|
|
1083
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1084
|
-
<span class="cline-any cline-no"> </span>
|
|
1085
|
-
<span class="cline-any cline-no"> </span>
|
|
1086
|
-
<span class="cline-any cline-no"> </span>
|
|
1087
|
-
<span class="cline-any cline-no"> </span>
|
|
1088
|
-
<span class="cline-any cline-no"> </span>
|
|
1089
|
-
<span class="cline-any cline-no"> </span>
|
|
1090
|
-
<span class="cline-any cline-no"> </span>
|
|
1091
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1092
|
-
<span class="cline-any cline-no"> </span>
|
|
1093
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1096
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1097
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
-
<span class="cline-any cline-no"> </span>
|
|
1102
|
-
<span class="cline-any cline-no"> </span>
|
|
1103
|
-
<span class="cline-any cline-no"> </span>
|
|
1104
|
-
<span class="cline-any cline-no"> </span>
|
|
1105
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1106
|
-
<span class="cline-any cline-no"> </span>
|
|
1107
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1108
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1109
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1110
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1111
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1112
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1116
|
-
<span class="cline-any cline-yes">4632x</span>
|
|
1117
|
-
<span class="cline-any cline-yes">4632x</span>
|
|
1118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1125
|
-
<span class="cline-any cline-yes">4632x</span>
|
|
1126
|
-
<span class="cline-any cline-yes">4632x</span>
|
|
1127
|
-
<span class="cline-any cline-yes">4632x</span>
|
|
1128
|
-
<span class="cline-any cline-yes">4632x</span>
|
|
1129
|
-
<span class="cline-any cline-yes">23624x</span>
|
|
1130
|
-
<span class="cline-any cline-yes">23624x</span>
|
|
1131
|
-
<span class="cline-any cline-yes">10061x</span>
|
|
1132
|
-
<span class="cline-any cline-yes">10061x</span>
|
|
1133
|
-
<span class="cline-any cline-yes">9967x</span>
|
|
1134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1135
|
-
<span class="cline-any cline-yes">94x</span>
|
|
1136
|
-
<span class="cline-any cline-yes">455x</span>
|
|
1137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1138
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1140
|
-
<span class="cline-any cline-yes">453x</span>
|
|
1141
|
-
<span class="cline-any cline-yes">453x</span>
|
|
1142
|
-
<span class="cline-any cline-yes">453x</span>
|
|
1143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1151
|
-
<span class="cline-any cline-yes">4632x</span>
|
|
1152
|
-
<span class="cline-any cline-yes">23624x</span>
|
|
1153
|
-
<span class="cline-any cline-yes">23624x</span>
|
|
1154
|
-
<span class="cline-any cline-yes">23624x</span>
|
|
1155
|
-
<span class="cline-any cline-yes">10061x</span>
|
|
1156
|
-
<span class="cline-any cline-yes">10061x</span>
|
|
1157
|
-
<span class="cline-any cline-yes">9967x</span>
|
|
1158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1159
|
-
<span class="cline-any cline-yes">94x</span>
|
|
1160
|
-
<span class="cline-any cline-yes">455x</span>
|
|
1161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1162
|
-
<span class="cline-any cline-yes">453x</span>
|
|
1163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1164
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1165
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1167
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1168
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1169
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1170
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1171
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1172
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1182
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1183
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1184
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1185
|
-
<span class="cline-any cline-yes">270x</span>
|
|
1186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1189
|
-
<span class="cline-any cline-yes">787x</span>
|
|
1190
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1191
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1192
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1195
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
-
<span class="cline-any cline-yes">787x</span>
|
|
1198
|
-
<span class="cline-any cline-yes">787x</span>
|
|
1199
|
-
<span class="cline-any cline-yes">787x</span>
|
|
1200
|
-
<span class="cline-any cline-yes">817x</span>
|
|
1201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1202
|
-
<span class="cline-any cline-yes">817x</span>
|
|
1203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1205
|
-
<span class="cline-any cline-yes">817x</span>
|
|
1206
|
-
<span class="cline-any cline-no"> </span>
|
|
1207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1208
|
-
<span class="cline-any cline-no"> </span>
|
|
1209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1210
|
-
<span class="cline-any cline-yes">817x</span>
|
|
1211
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1212
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1213
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1214
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1215
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1216
|
-
<span class="cline-any cline-yes">807x</span>
|
|
1217
|
-
<span class="cline-any cline-yes">20x</span>
|
|
1218
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1219
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1220
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1222
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1224
|
-
<span class="cline-any cline-yes">787x</span>
|
|
1225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1229
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1230
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1231
|
-
<span class="cline-any cline-yes">141x</span>
|
|
1232
|
-
<span class="cline-any cline-yes">141x</span>
|
|
1233
|
-
<span class="cline-any cline-yes">140x</span>
|
|
1234
|
-
<span class="cline-any cline-yes">140x</span>
|
|
1235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1236
|
-
<span class="cline-any cline-no"> </span>
|
|
1237
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1238
|
-
<span class="cline-any cline-yes">140x</span>
|
|
1239
|
-
<span class="cline-any cline-yes">140x</span>
|
|
1240
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1241
|
-
<span class="cline-any cline-no"> </span>
|
|
1242
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1246
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1247
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1249
|
-
<span class="cline-any cline-yes">141x</span>
|
|
1250
|
-
<span class="cline-any cline-no"> </span>
|
|
1251
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1252
|
-
<span class="cline-any cline-yes">141x</span>
|
|
1253
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1255
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1257
|
-
<span class="cline-any cline-yes">140x</span>
|
|
1258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1259
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1260
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1261
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1262
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1264
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1265
|
-
<span class="cline-any cline-no"> </span>
|
|
1266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1267
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1268
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1269
|
-
<span class="cline-any cline-no"> </span>
|
|
1270
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1271
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1274
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1275
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1277
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1278
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1281
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1282
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1283
|
-
<span class="cline-any cline-no"> </span>
|
|
1284
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1285
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1287
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1288
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1289
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1290
|
-
<span class="cline-any cline-yes">61x</span>
|
|
1291
|
-
<span class="cline-any cline-yes">31x</span>
|
|
1292
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1294
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1295
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1297
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1298
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1299
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1300
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1301
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1303
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1304
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1305
|
-
<span class="cline-any cline-yes">99x</span>
|
|
1306
|
-
<span class="cline-any cline-yes">99x</span>
|
|
1307
|
-
<span class="cline-any cline-yes">99x</span>
|
|
1308
|
-
<span class="cline-any cline-no"> </span>
|
|
1309
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1310
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1311
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1312
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1313
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1315
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1316
|
-
<span class="cline-any cline-yes">99x</span>
|
|
1317
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1318
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1319
|
-
<span class="cline-any cline-no"> </span>
|
|
1320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1321
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1331
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1332
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1333
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1334
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1335
|
-
<span class="cline-any cline-no"> </span>
|
|
1336
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1337
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1338
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1340
|
-
<span class="cline-any cline-yes">90x</span>
|
|
1341
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1342
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1349
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1350
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1351
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1352
|
-
<span class="cline-any cline-yes">3472x</span>
|
|
1353
|
-
<span class="cline-any cline-yes">3472x</span>
|
|
1354
|
-
<span class="cline-any cline-yes">3472x</span>
|
|
1355
|
-
<span class="cline-any cline-yes">213x</span>
|
|
1356
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
-
<span class="cline-any cline-yes">3259x</span>
|
|
1358
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1359
|
-
<span class="cline-any cline-yes">3472x</span>
|
|
1360
|
-
<span class="cline-any cline-yes">3472x</span>
|
|
1361
|
-
<span class="cline-any cline-yes">3472x</span>
|
|
1362
|
-
<span class="cline-any cline-yes">3472x</span>
|
|
1363
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1364
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1365
|
-
<span class="cline-any cline-yes">3243x</span>
|
|
1366
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1371
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1372
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1373
|
-
<span class="cline-any cline-yes">754x</span>
|
|
1374
|
-
<span class="cline-any cline-no"> </span>
|
|
1375
|
-
<span class="cline-any cline-no"> </span>
|
|
1376
|
-
<span class="cline-any cline-no"> </span>
|
|
1377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
-
<span class="cline-any cline-no"> </span>
|
|
1380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1381
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1382
|
-
<span class="cline-any cline-no"> </span>
|
|
1383
|
-
<span class="cline-any cline-no"> </span>
|
|
1384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1385
|
-
<span class="cline-any cline-no"> </span>
|
|
1386
|
-
<span class="cline-any cline-no"> </span>
|
|
1387
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1388
|
-
<span class="cline-any cline-no"> </span>
|
|
1389
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1391
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1392
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1393
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1394
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1395
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1396
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1397
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1398
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">// This module makes an instance of the [i18next](https://npmjs.org/package/i18next) npm module available
|
|
1399
|
-
// in Nunjucks templates via the `__t()` helper function. That function is also available on `req` objects
|
|
1400
|
-
// as `req.t()`. Any options passed to this module are passed on to `i18next`.
|
|
1401
|
-
//
|
|
1402
|
-
// `apos.i18n.i18next` can be used to directly access the `i18next` npm module instance if necessary.
|
|
1403
|
-
// It usually is not necessary. Use `req.t` if you need to localize in a route.
|
|
1404
|
-
|
|
1405
|
-
const i18next = require('i18next');
|
|
1406
|
-
const fs = require('fs');
|
|
1407
|
-
const _ = require('lodash');
|
|
1408
|
-
const { stripIndent } = require('common-tags');
|
|
1409
|
-
const ExpressSessionCookie = require('express-session/session/cookie');
|
|
1410
|
-
const path = require('path');
|
|
1411
|
-
|
|
1412
|
-
const apostropheI18nDebugPlugin = {
|
|
1413
|
-
type: 'postProcessor',
|
|
1414
|
-
name: 'apostropheI18nDebugPlugin',
|
|
1415
|
-
<span class="fstat-no" title="function not covered" > pr</span>ocess(value, key, options, translator) {
|
|
1416
|
-
// The key is passed as an array (theoretically to include multiple keys).
|
|
1417
|
-
// We confirm that and grab the primary one for comparison.
|
|
1418
|
-
const l10nKey = <span class="cstat-no" title="statement not covered" >Array.isArray(key) ? key[0] : key;</span>
|
|
1419
|
-
|
|
1420
|
-
<span class="cstat-no" title="statement not covered" > if (value === l10nKey) {</span>
|
|
1421
|
-
<span class="cstat-no" title="statement not covered" > if (l10nKey.match(/^\S+:/)) {</span>
|
|
1422
|
-
// The l10n key does not have a value assigned (or the key is
|
|
1423
|
-
// actually the same as the phrase). The key seems to have a
|
|
1424
|
-
// namespace, so might be from the Apostrophe UI.
|
|
1425
|
-
<span class="cstat-no" title="statement not covered" > return `❌ ${value}`;</span>
|
|
1426
|
-
} else {
|
|
1427
|
-
// The l10n key does not have a value assigned (or the key is
|
|
1428
|
-
// actually the same as the phrase). It is in the default namespace.
|
|
1429
|
-
<span class="cstat-no" title="statement not covered" > return `🕳 ${value}`;</span>
|
|
1430
|
-
}
|
|
1431
|
-
} else {
|
|
1432
|
-
// The phrase is fully localized.
|
|
1433
|
-
<span class="cstat-no" title="statement not covered" > return `🌍 ${value}`;</span>
|
|
1434
|
-
}
|
|
1435
|
-
}
|
|
1436
|
-
};
|
|
1437
|
-
|
|
1438
|
-
module.exports = {
|
|
1439
|
-
options: {
|
|
1440
|
-
alias: 'i18n',
|
|
1441
|
-
i18n: {
|
|
1442
|
-
ns: 'apostrophe',
|
|
1443
|
-
browser: true
|
|
1444
|
-
}
|
|
1445
|
-
},
|
|
1446
|
-
async init(self) {
|
|
1447
|
-
self.defaultNamespace = 'default';
|
|
1448
|
-
self.namespaces = {};
|
|
1449
|
-
self.debug = process.env.APOS_DEBUG_I18N ? <span class="branch-0 cbranch-no" title="branch not covered" >true </span>: self.options.debug;
|
|
1450
|
-
self.show = process.env.APOS_SHOW_I18N ? <span class="branch-0 cbranch-no" title="branch not covered" >true </span>: self.options.show;
|
|
1451
|
-
self.locales = self.getLocales();
|
|
1452
|
-
self.hostnamesInUse = Object.values(self.locales).find(locale => locale.hostname);
|
|
1453
|
-
self.defaultLocale = self.options.defaultLocale || Object.keys(self.locales)[0];
|
|
1454
|
-
// Lint the locale configurations
|
|
1455
|
-
for (const [ key, options ] of Object.entries(self.locales)) {
|
|
1456
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!options) {
|
|
1457
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', `Locale "${key}" was not configured.`);</span>
|
|
1458
|
-
}
|
|
1459
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (typeof key !== 'string' || !key.match(/^[a-zA-Z]/)) {
|
|
1460
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', `Locale names must begin with a non-numeric, "word" character (a-z or A-Z). Check locale "${key}".`);</span>
|
|
1461
|
-
}
|
|
1462
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (options.prefix && !options.prefix.match(/^\//)) {
|
|
1463
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', `Locale prefixes must begin with a forward slash ("/"). Check locale "${key}".`);</span>
|
|
1464
|
-
}
|
|
1465
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (options.prefix && options.prefix.match(/\/.*?\//)) {
|
|
1466
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', `Locale prefixes must not contain more than one forward slash ("/").\nUse hyphens as separators. Check locale "${key}".`);</span>
|
|
1467
|
-
}
|
|
1468
|
-
}
|
|
1469
|
-
const fallbackLng = [ self.defaultLocale ];
|
|
1470
|
-
// In case the default locale also has inadequate admin UI phrases
|
|
1471
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (fallbackLng[0] !== 'en') {
|
|
1472
|
-
<span class="cstat-no" title="statement not covered" > fallbackLng.push('en');</span>
|
|
1473
|
-
}
|
|
1474
|
-
// Make sure we have our own instance to avoid conflicts with other apos objects
|
|
1475
|
-
self.i18next = i18next.createInstance({
|
|
1476
|
-
fallbackLng,
|
|
1477
|
-
// Required to prevent the debugger from complaining
|
|
1478
|
-
languages: Object.keys(self.locales),
|
|
1479
|
-
// Added later, but required here
|
|
1480
|
-
resources: {},
|
|
1481
|
-
interpolation: {
|
|
1482
|
-
// Nunjucks and Vue will already do this
|
|
1483
|
-
escapeValue: false
|
|
1484
|
-
},
|
|
1485
|
-
defaultNS: self.defaultNamespace,
|
|
1486
|
-
debug: self.debug
|
|
1487
|
-
});
|
|
1488
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (self.show) {
|
|
1489
|
-
<span class="cstat-no" title="statement not covered" > self.i18next.use(apostropheI18nDebugPlugin);</span>
|
|
1490
|
-
}
|
|
1491
|
-
|
|
1492
|
-
const i18nextOptions = self.show ? <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1493
|
-
postProcess: 'apostropheI18nDebugPlugin'
|
|
1494
|
-
} : {};
|
|
1495
|
-
|
|
1496
|
-
await self.i18next.init(i18nextOptions);
|
|
1497
|
-
self.addInitialResources();
|
|
1498
|
-
self.enableBrowserData();
|
|
1499
|
-
},
|
|
1500
|
-
handlers(self) {
|
|
1501
|
-
return {
|
|
1502
|
-
'apostrophe:modulesRegistered': {
|
|
1503
|
-
addModal() {
|
|
1504
|
-
self.addLocalizeModal();
|
|
1505
|
-
}
|
|
1506
|
-
},
|
|
1507
|
-
'@apostrophecms/page:beforeSend': {
|
|
1508
|
-
// Developers can link to alternate locales by iterating over
|
|
1509
|
-
// `data.localizations` in any page template. Each element always has
|
|
1510
|
-
// `locale`, `label` and `homePageUrl` properties. Each element also has an
|
|
1511
|
-
// `available` property; if true, the current context document is available
|
|
1512
|
-
// in that locale, `title` and a small number of other document properties are
|
|
1513
|
-
// populated, and `_url` redirects to the context document in that locale.
|
|
1514
|
-
//
|
|
1515
|
-
// The array is provided in the order in which locales are configured.
|
|
1516
|
-
// The current locale is included and has the property `current: true`.
|
|
1517
|
-
async addLocalizations(req) {
|
|
1518
|
-
const context = req.data.piece || req.data.page;
|
|
1519
|
-
if (!context) {
|
|
1520
|
-
return;
|
|
1521
|
-
}
|
|
1522
|
-
const manager = self.apos.doc.getManager(context.type);
|
|
1523
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!manager.isLocalized()) {
|
|
1524
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1525
|
-
}
|
|
1526
|
-
const localizations = await self.apos.doc.db.find({
|
|
1527
|
-
aposDocId: context.aposDocId,
|
|
1528
|
-
aposMode: req.mode
|
|
1529
|
-
}).project({
|
|
1530
|
-
type: 1,
|
|
1531
|
-
title: 1,
|
|
1532
|
-
slug: 1,
|
|
1533
|
-
aposLocale: 1,
|
|
1534
|
-
aposMode: 1,
|
|
1535
|
-
visibility: 1,
|
|
1536
|
-
docPermissions: 1
|
|
1537
|
-
}).toArray();
|
|
1538
|
-
req.data.localizations = [];
|
|
1539
|
-
for (const name of Object.keys(self.locales)) {
|
|
1540
|
-
const localeReq = self.apos.util.cloneReq(req, {
|
|
1541
|
-
locale: name
|
|
1542
|
-
});
|
|
1543
|
-
self.setPrefixUrls(localeReq);
|
|
1544
|
-
const doc = localizations.find(doc => doc.aposLocale.split(':')[0] === name);
|
|
1545
|
-
if (doc && self.apos.permission.can(req, 'view', doc)) {
|
|
1546
|
-
doc.available = true;
|
|
1547
|
-
doc._url = `${self.apos.prefix}${manager.action}/${context._id}/locale/${name}`;
|
|
1548
|
-
if (doc._id === context._id) {
|
|
1549
|
-
doc.current = true;
|
|
1550
|
-
}
|
|
1551
|
-
}
|
|
1552
|
-
const info = doc || {};
|
|
1553
|
-
info.locale = name;
|
|
1554
|
-
info.label = self.locales[name].label;
|
|
1555
|
-
info.homePageUrl = `${localeReq.prefix}/`;
|
|
1556
|
-
req.data.localizations.push(info);
|
|
1557
|
-
}
|
|
1558
|
-
}
|
|
1559
|
-
}
|
|
1560
|
-
};
|
|
1561
|
-
},
|
|
1562
|
-
middleware(self) {
|
|
1563
|
-
return {
|
|
1564
|
-
async acceptCrossDomainSessionToken(req, res, next) {
|
|
1565
|
-
let crossDomainSessionToken = req.query.aposCrossDomainSessionToken;
|
|
1566
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!crossDomainSessionToken) {
|
|
1567
|
-
return next();
|
|
1568
|
-
}
|
|
1569
|
-
<span class="cstat-no" title="statement not covered" > crossDomainSessionToken = self.apos.launder.string(crossDomainSessionToken);</span>
|
|
1570
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1571
|
-
const sessionData = <span class="cstat-no" title="statement not covered" >await self.apos.cache.get('@apostrophecms/i18n:cross-domain-sessions', crossDomainSessionToken);</span>
|
|
1572
|
-
<span class="cstat-no" title="statement not covered" > for (const key of Object.keys(req.session)) {</span>
|
|
1573
|
-
<span class="cstat-no" title="statement not covered" > delete req.session[key];</span>
|
|
1574
|
-
}
|
|
1575
|
-
<span class="cstat-no" title="statement not covered" > Object.assign(req.session, sessionData || {});</span>
|
|
1576
|
-
<span class="cstat-no" title="statement not covered" > await self.apos.cache.set('@apostrophecms/i18n:cross-domain-sessions', crossDomainSessionToken, null);</span>
|
|
1577
|
-
} catch (e) {
|
|
1578
|
-
<span class="cstat-no" title="statement not covered" > self.apos.util.error(e);</span>
|
|
1579
|
-
}
|
|
1580
|
-
// Since the req.session object at this stage is just
|
|
1581
|
-
// a plain Javascript object, getters and setters of
|
|
1582
|
-
// the Cookie prototype from the express-session module
|
|
1583
|
-
// (like req.session.cookie.data) are unavailable and
|
|
1584
|
-
// will return 'undefined' when called internally by the
|
|
1585
|
-
// express-session module. This ends up corrupting the
|
|
1586
|
-
// set-cookie headers generated by the express-session
|
|
1587
|
-
// module, thus breaking sessions. The express-session
|
|
1588
|
-
// module normally generates an instance of its Cookie
|
|
1589
|
-
// prototype which contains these methods and expects
|
|
1590
|
-
// that interface always to function properly. To ensure
|
|
1591
|
-
// this, we re-instantiate req.session.cookie as an
|
|
1592
|
-
// instance of the Cookie class from the express-session
|
|
1593
|
-
// module to ensure that the sessions remain intact even
|
|
1594
|
-
// across domains. Note that we use the cookie settings
|
|
1595
|
-
// from the Apostrophe Express module to ensure that user
|
|
1596
|
-
// defined cookie settings are respected.
|
|
1597
|
-
const aposExpressModule = <span class="cstat-no" title="statement not covered" >self.apos.modules['@apostrophecms/express'];</span>
|
|
1598
|
-
<span class="cstat-no" title="statement not covered" > req.session.cookie = new ExpressSessionCookie(aposExpressModule.sessionOptions.cookie);</span>
|
|
1599
|
-
<span class="cstat-no" title="statement not covered" > return res.redirect(self.apos.url.build(req.url, { aposCrossDomainSessionToken: null }));</span>
|
|
1600
|
-
},
|
|
1601
|
-
locale(req, res, next) {
|
|
1602
|
-
// Support for a single aposLocale query param that
|
|
1603
|
-
// also contains the mode, which is likely to occur
|
|
1604
|
-
// since we have the `aposLocale` property in docs
|
|
1605
|
-
// structured that way
|
|
1606
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (req.query.aposLocale && <span class="branch-1 cbranch-no" title="branch not covered" >req.query.aposLocale.includes(':'))</span> {
|
|
1607
|
-
const parts = <span class="cstat-no" title="statement not covered" >req.query.aposLocale.split(':');</span>
|
|
1608
|
-
<span class="cstat-no" title="statement not covered" > req.query.aposLocale = parts[0];</span>
|
|
1609
|
-
<span class="cstat-no" title="statement not covered" > req.query.aposMode = parts[1];</span>
|
|
1610
|
-
}
|
|
1611
|
-
const validModes = [ 'draft', 'published' ];
|
|
1612
|
-
let locale;
|
|
1613
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (self.isValidLocale(req.query.aposLocale)) {
|
|
1614
|
-
<span class="cstat-no" title="statement not covered" > locale = req.query.aposLocale;</span>
|
|
1615
|
-
} else {
|
|
1616
|
-
locale = self.matchLocale(req);
|
|
1617
|
-
}
|
|
1618
|
-
const localeOptions = self.locales[locale];
|
|
1619
|
-
if (localeOptions.prefix) {
|
|
1620
|
-
// Remove locale prefix so URL parsing can proceed normally from here
|
|
1621
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (req.path === localeOptions.prefix) {
|
|
1622
|
-
// Add / for home page
|
|
1623
|
-
<span class="cstat-no" title="statement not covered" > return res.redirect(`${req.url}/`);</span>
|
|
1624
|
-
}
|
|
1625
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (req.path.substring(0, localeOptions.prefix.length + 1) === localeOptions.prefix + '/') {
|
|
1626
|
-
req.path = req.path.replace(localeOptions.prefix, '');
|
|
1627
|
-
req.url = req.url.replace(localeOptions.prefix, '');
|
|
1628
|
-
const superRedirect = res.redirect;
|
|
1629
|
-
res.redirect = <span class="fstat-no" title="function not covered" >fu</span>nction (status, url) {
|
|
1630
|
-
<span class="cstat-no" title="statement not covered" > if (arguments.length === 1) {</span>
|
|
1631
|
-
<span class="cstat-no" title="statement not covered" > url = status;</span>
|
|
1632
|
-
<span class="cstat-no" title="statement not covered" > status = 302;</span>
|
|
1633
|
-
}
|
|
1634
|
-
<span class="cstat-no" title="statement not covered" > if (!url.match(/^[a-zA-Z]+:/)) {</span>
|
|
1635
|
-
// We don't need all of req.prefix here because
|
|
1636
|
-
// the global site prefix middleware already extended
|
|
1637
|
-
// res.redirect once
|
|
1638
|
-
<span class="cstat-no" title="statement not covered" > url = localeOptions.prefix + url;</span>
|
|
1639
|
-
}
|
|
1640
|
-
<span class="cstat-no" title="statement not covered" > return superRedirect.call(this, status, url);</span>
|
|
1641
|
-
};
|
|
1642
|
-
}
|
|
1643
|
-
}
|
|
1644
|
-
let mode;
|
|
1645
|
-
if (validModes.includes(req.query.aposMode)) {
|
|
1646
|
-
mode = req.query.aposMode;
|
|
1647
|
-
} else {
|
|
1648
|
-
mode = 'published';
|
|
1649
|
-
}
|
|
1650
|
-
req.locale = locale;
|
|
1651
|
-
req.mode = mode;
|
|
1652
|
-
self.setPrefixUrls(req);
|
|
1653
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if ((req.mode === 'draft') && (!self.apos.permission.can(req, 'view-draft'))) {
|
|
1654
|
-
<span class="cstat-no" title="statement not covered" > return res.status(403).send({</span>
|
|
1655
|
-
name: 'forbidden'
|
|
1656
|
-
});
|
|
1657
|
-
}
|
|
1658
|
-
_.defaults(req.data, _.pick(req, 'baseUrl', 'baseUrlWithPrefix', 'absoluteUrl'));
|
|
1659
|
-
return next();
|
|
1660
|
-
},
|
|
1661
|
-
localize(req, res, next) {
|
|
1662
|
-
req.t = (key, options = {}) => {
|
|
1663
|
-
return self.i18next.t(key, {
|
|
1664
|
-
...options,
|
|
1665
|
-
lng: req.locale
|
|
1666
|
-
});
|
|
1667
|
-
};
|
|
1668
|
-
req.__ = <span class="fstat-no" title="function not covered" >ke</span>y => {
|
|
1669
|
-
<span class="cstat-no" title="statement not covered" > self.apos.util.warnDevOnce('old-i18n-req-helper', stripIndent`</span>
|
|
1670
|
-
The req.__() and res.__() functions are deprecated and do not localize in A3.
|
|
1671
|
-
Use req.t instead.
|
|
1672
|
-
`);
|
|
1673
|
-
<span class="cstat-no" title="statement not covered" > return key;</span>
|
|
1674
|
-
};
|
|
1675
|
-
req.res.__ = req.__;
|
|
1676
|
-
return next();
|
|
1677
|
-
}
|
|
1678
|
-
};
|
|
1679
|
-
},
|
|
1680
|
-
apiRoutes(self) {
|
|
1681
|
-
return {
|
|
1682
|
-
post: {
|
|
1683
|
-
<span class="fstat-no" title="function not covered" > as</span>ync locale(req) {
|
|
1684
|
-
const sanitizedLocale = <span class="cstat-no" title="statement not covered" >self.sanitizeLocaleName(req.body.locale);</span>
|
|
1685
|
-
// Clipboards transferring between locales needs to jump
|
|
1686
|
-
// from LocalStorage to the cross-domain session cache
|
|
1687
|
-
let clipboard = <span class="cstat-no" title="statement not covered" >req.body.clipboard;</span>
|
|
1688
|
-
<span class="cstat-no" title="statement not covered" > if (clipboard && ((typeof clipboard) !== 'string')) {</span>
|
|
1689
|
-
// Clipboard re-validation doesn't have to be more detailed here because
|
|
1690
|
-
// on any actual paste attempt it will go through server side validation
|
|
1691
|
-
// like any normal insert of a widget
|
|
1692
|
-
<span class="cstat-no" title="statement not covered" > clipboard = null;</span>
|
|
1693
|
-
}
|
|
1694
|
-
const _id = <span class="cstat-no" title="statement not covered" >self.apos.launder.id(req.body.contextDocId);</span>
|
|
1695
|
-
let doc;
|
|
1696
|
-
const localeReq = <span class="cstat-no" title="statement not covered" >req.clone({</span>
|
|
1697
|
-
locale: sanitizedLocale
|
|
1698
|
-
});
|
|
1699
|
-
<span class="cstat-no" title="statement not covered" > if (_id) {</span>
|
|
1700
|
-
<span class="cstat-no" title="statement not covered" > doc = await self.apos.doc.find(localeReq, {</span>
|
|
1701
|
-
aposDocId: _id.split(':')[0]
|
|
1702
|
-
}).toObject();
|
|
1703
|
-
<span class="cstat-no" title="statement not covered" > if (!doc) {</span>
|
|
1704
|
-
const publishedLocaleReq = <span class="cstat-no" title="statement not covered" >localeReq.clone({ mode: 'draft' });</span>
|
|
1705
|
-
<span class="cstat-no" title="statement not covered" > doc = await self.apos.doc.find(publishedLocaleReq, {</span>
|
|
1706
|
-
aposDocId: _id.split(':')[0]
|
|
1707
|
-
}).toObject();
|
|
1708
|
-
}
|
|
1709
|
-
}
|
|
1710
|
-
<span class="cstat-no" title="statement not covered" > if (!sanitizedLocale) {</span>
|
|
1711
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid');</span>
|
|
1712
|
-
}
|
|
1713
|
-
const result = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
1714
|
-
<span class="cstat-no" title="statement not covered" > if (doc && doc._url) {</span>
|
|
1715
|
-
<span class="cstat-no" title="statement not covered" > result.redirectTo = doc && doc._url;</span>
|
|
1716
|
-
} else {
|
|
1717
|
-
// No matching document, so as a fallback go to the home page
|
|
1718
|
-
// with the appropriate prefix
|
|
1719
|
-
<span class="cstat-no" title="statement not covered" > result.redirectTo = localeReq.prefix;</span>
|
|
1720
|
-
};
|
|
1721
|
-
<span class="cstat-no" title="statement not covered" > if (self.locales[localeReq.locale].hostname !== self.locales[req.locale].hostname) {</span>
|
|
1722
|
-
const crossDomainSessionToken = <span class="cstat-no" title="statement not covered" >self.apos.util.generateId();</span>
|
|
1723
|
-
const session = <span class="cstat-no" title="statement not covered" >{</span>
|
|
1724
|
-
...req.session,
|
|
1725
|
-
aposCrossDomainClipboard: clipboard
|
|
1726
|
-
};
|
|
1727
|
-
<span class="cstat-no" title="statement not covered" > await self.apos.cache.set('@apostrophecms/i18n:cross-domain-sessions', crossDomainSessionToken, session, 60 * 60);</span>
|
|
1728
|
-
<span class="cstat-no" title="statement not covered" > result.redirectTo = self.apos.url.build(result.redirectTo, {</span>
|
|
1729
|
-
aposCrossDomainSessionToken: crossDomainSessionToken
|
|
1730
|
-
});
|
|
1731
|
-
}
|
|
1732
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
1733
|
-
},
|
|
1734
|
-
// Fast bulk query for doc `ids` that exist in the given `locale`.
|
|
1735
|
-
// `ids` may contain `_id` or `aposDocId` values.
|
|
1736
|
-
//
|
|
1737
|
-
// The response object contains `originalLocaleIds`, `newLocaleIds` and
|
|
1738
|
-
// `aposDocIds` arrays. Any documents not existing in `locale`
|
|
1739
|
-
// will not be included in these arrays.
|
|
1740
|
-
//
|
|
1741
|
-
// The original mode and locale are inferred from the given
|
|
1742
|
-
// `ids`, or from the request.
|
|
1743
|
-
//
|
|
1744
|
-
// This route is a POST route because large numbers of ids
|
|
1745
|
-
// might not be accepted as a query string.
|
|
1746
|
-
<span class="fstat-no" title="function not covered" > as</span>ync existInLocale(req) {
|
|
1747
|
-
<span class="cstat-no" title="statement not covered" > if (!req.user) {</span>
|
|
1748
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('notfound');</span>
|
|
1749
|
-
}
|
|
1750
|
-
const ids = <span class="cstat-no" title="statement not covered" >self.apos.launder.ids(req.body.ids);</span>
|
|
1751
|
-
const locale = <span class="cstat-no" title="statement not covered" >self.apos.launder.string(req.body.locale);</span>
|
|
1752
|
-
const originalLocale = <span class="cstat-no" title="statement not covered" >(ids[0] && ids[0].split(':')[1]) || req.locale;</span>
|
|
1753
|
-
const originalMode = <span class="cstat-no" title="statement not covered" >(ids[0] && ids[0].split(':')[2]) || req.mode;</span>
|
|
1754
|
-
const mode = <span class="cstat-no" title="statement not covered" >self.apos.launder.string(req.body.mode, originalMode);</span>
|
|
1755
|
-
<span class="cstat-no" title="statement not covered" > if (!self.isValidLocale(locale)) {</span>
|
|
1756
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid');</span>
|
|
1757
|
-
}
|
|
1758
|
-
const found = <span class="cstat-no" title="statement not covered" >await self.apos.doc.db.find({</span>
|
|
1759
|
-
aposLocale: `${locale}:${mode}`,
|
|
1760
|
-
aposDocId: {
|
|
1761
|
-
$in: ids.map(self.apos.doc.toAposDocId)
|
|
1762
|
-
}
|
|
1763
|
-
}).project({
|
|
1764
|
-
_id: 1,
|
|
1765
|
-
aposDocId: 1
|
|
1766
|
-
}).toArray();
|
|
1767
|
-
const result = <span class="cstat-no" title="statement not covered" >{</span>
|
|
1768
|
-
originalLocaleIds: found.map(<span class="fstat-no" title="function not covered" >do</span>c => <span class="cstat-no" title="statement not covered" >`${doc.aposDocId}:${originalLocale}:${originalMode}`)</span>,
|
|
1769
|
-
newLocaleIds: found.map(<span class="fstat-no" title="function not covered" >do</span>c => <span class="cstat-no" title="statement not covered" >doc._id)</span>,
|
|
1770
|
-
aposDocIds: found.map(<span class="fstat-no" title="function not covered" >do</span>c => <span class="cstat-no" title="statement not covered" >doc.aposDocId)</span>
|
|
1771
|
-
};
|
|
1772
|
-
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
1773
|
-
}
|
|
1774
|
-
}
|
|
1775
|
-
};
|
|
1776
|
-
},
|
|
1777
|
-
methods(self) {
|
|
1778
|
-
return {
|
|
1779
|
-
// Add the i18next resources provided by the specified module,
|
|
1780
|
-
// merging with any existing phrases for the same locales and namespaces
|
|
1781
|
-
addResourcesForModule(module) {
|
|
1782
|
-
self.addDefaultResourcesForModule(module);
|
|
1783
|
-
self.addNamespacedResourcesForModule(module);
|
|
1784
|
-
},
|
|
1785
|
-
// Automatically adds any localizations found in .json files in the main `i18n` subdirectory
|
|
1786
|
-
// of a module.
|
|
1787
|
-
//
|
|
1788
|
-
// These are added to the `default` namespace, unless the legacy `i18n.ns` option is set
|
|
1789
|
-
// for the module (not the preferred way, use namespace subdirectories in new projects).
|
|
1790
|
-
addDefaultResourcesForModule(module) {
|
|
1791
|
-
const ns = (module.options.i18n && module.options.i18n.ns) || 'default';
|
|
1792
|
-
self.namespaces[ns] = self.namespaces[ns] || {};
|
|
1793
|
-
self.namespaces[ns].browser = self.namespaces[ns].browser || (module.options.i18n && module.options.i18n.browser);
|
|
1794
|
-
for (const entry of module.__meta.chain) {
|
|
1795
|
-
const localizationsDir = path.join(entry.dirname, 'i18n');
|
|
1796
|
-
if (!self.defaultLocalizationsDirsAdded.has(localizationsDir)) {
|
|
1797
|
-
self.defaultLocalizationsDirsAdded.add(localizationsDir);
|
|
1798
|
-
if (!fs.existsSync(localizationsDir)) {
|
|
1799
|
-
continue;
|
|
1800
|
-
}
|
|
1801
|
-
for (const localizationFile of fs.readdirSync(localizationsDir)) {
|
|
1802
|
-
if (!localizationFile.endsWith('.json')) {
|
|
1803
|
-
// Likely a namespace subdirectory
|
|
1804
|
-
continue;
|
|
1805
|
-
}
|
|
1806
|
-
const data = JSON.parse(fs.readFileSync(path.join(localizationsDir, localizationFile)));
|
|
1807
|
-
const locale = localizationFile.replace('.json', '');
|
|
1808
|
-
self.i18next.addResourceBundle(locale, ns, data, true, true);
|
|
1809
|
-
}
|
|
1810
|
-
}
|
|
1811
|
-
}
|
|
1812
|
-
},
|
|
1813
|
-
// Automatically adds any localizations found in subdirectories of the main `i18n`
|
|
1814
|
-
// subdirectory of a module. The subdirectory's name is treated as an i18n namespace
|
|
1815
|
-
// name.
|
|
1816
|
-
addNamespacedResourcesForModule(module) {
|
|
1817
|
-
for (const entry of module.__meta.chain) {
|
|
1818
|
-
const metadata = module.__meta.i18n[entry.name] || {};
|
|
1819
|
-
const localizationsDir = `${entry.dirname}/i18n`;
|
|
1820
|
-
if (!self.namespacedLocalizationsDirsAdded.has(localizationsDir)) {
|
|
1821
|
-
self.namespacedLocalizationsDirsAdded.add(localizationsDir);
|
|
1822
|
-
if (!fs.existsSync(localizationsDir)) {
|
|
1823
|
-
continue;
|
|
1824
|
-
}
|
|
1825
|
-
for (const ns of fs.readdirSync(localizationsDir)) {
|
|
1826
|
-
if (ns.endsWith('.json')) {
|
|
1827
|
-
// A JSON file for the default namespace, already handled
|
|
1828
|
-
continue;
|
|
1829
|
-
}
|
|
1830
|
-
self.namespaces[ns] = self.namespaces[ns] || {};
|
|
1831
|
-
self.namespaces[ns].browser = self.namespaces[ns].browser ||
|
|
1832
|
-
(metadata[ns] && metadata[ns].browser);
|
|
1833
|
-
const namespaceDir = path.join(localizationsDir, ns);
|
|
1834
|
-
for (const localizationFile of fs.readdirSync(namespaceDir)) {
|
|
1835
|
-
const fullLocalizationFile = path.join(namespaceDir, localizationFile);
|
|
1836
|
-
const data = JSON.parse(fs.readFileSync(fullLocalizationFile));
|
|
1837
|
-
const locale = localizationFile.replace('.json', '');
|
|
1838
|
-
self.i18next.addResourceBundle(locale, ns, data, true, true);
|
|
1839
|
-
}
|
|
1840
|
-
}
|
|
1841
|
-
}
|
|
1842
|
-
}
|
|
1843
|
-
},
|
|
1844
|
-
// Adds i18next resources for modules initialized before the i18n module
|
|
1845
|
-
// itself, called by init. Later modules call addResourcesForModule(self),
|
|
1846
|
-
// making phrases available gradually as Apostrophe starts up
|
|
1847
|
-
addInitialResources() {
|
|
1848
|
-
self.defaultLocalizationsDirsAdded = new Set();
|
|
1849
|
-
self.namespacedLocalizationsDirsAdded = new Set();
|
|
1850
|
-
for (const module of Object.values(self.apos.modules)) {
|
|
1851
|
-
self.addResourcesForModule(module);
|
|
1852
|
-
}
|
|
1853
|
-
},
|
|
1854
|
-
isValidLocale(locale) {
|
|
1855
|
-
return locale && <span class="branch-1 cbranch-no" title="branch not covered" >has(self.locales, locale);</span>
|
|
1856
|
-
},
|
|
1857
|
-
// Return the best matching locale for the request based on the hostname
|
|
1858
|
-
// and path prefix. If available the first locale matching both
|
|
1859
|
-
// hostname and prefix is returned, otherwise the first matching locale
|
|
1860
|
-
// that specifies only a hostname or only a prefix. If no matches are
|
|
1861
|
-
// possible the default locale is returned.
|
|
1862
|
-
matchLocale(req) {
|
|
1863
|
-
const hostname = req.hostname;
|
|
1864
|
-
let best = false;
|
|
1865
|
-
for (const [ name, options ] of Object.entries(self.locales)) {
|
|
1866
|
-
const matchedHostname = options.hostname
|
|
1867
|
-
? (hostname === options.hostname.split(':')[0]) : null;
|
|
1868
|
-
const matchedPrefix = options.prefix
|
|
1869
|
-
? ((req.path === options.prefix) || req.path.startsWith(options.prefix + '/'))
|
|
1870
|
-
: null;
|
|
1871
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (options.hostname && options.prefix) {
|
|
1872
|
-
<span class="cstat-no" title="statement not covered" > if (matchedHostname && matchedPrefix) {</span>
|
|
1873
|
-
// Best possible match
|
|
1874
|
-
<span class="cstat-no" title="statement not covered" > return name;</span>
|
|
1875
|
-
}
|
|
1876
|
-
} else if (options.hostname) {
|
|
1877
|
-
if (matchedHostname) {
|
|
1878
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!best) {
|
|
1879
|
-
best = name;
|
|
1880
|
-
}
|
|
1881
|
-
}
|
|
1882
|
-
} else if (options.prefix) {
|
|
1883
|
-
if (matchedPrefix) {
|
|
1884
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!best) {
|
|
1885
|
-
best = name;
|
|
1886
|
-
}
|
|
1887
|
-
}
|
|
1888
|
-
}
|
|
1889
|
-
}
|
|
1890
|
-
return best || self.defaultLocale;
|
|
1891
|
-
},
|
|
1892
|
-
// Infer `req.locale` and `req.mode` from `_id` if they were
|
|
1893
|
-
// not set already by explicit query parameters. Conversely,
|
|
1894
|
-
// if the appropriate query parameters were set, rewrite
|
|
1895
|
-
// `_id` accordingly. Returns `_id`, after rewriting if appropriate.
|
|
1896
|
-
inferIdLocaleAndMode(req, _id) {
|
|
1897
|
-
let [ cuid, locale, mode ] = _id.split(':');
|
|
1898
|
-
if (locale && mode) {
|
|
1899
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!req.query.aposLocale) {
|
|
1900
|
-
req.locale = locale;
|
|
1901
|
-
} else {
|
|
1902
|
-
<span class="cstat-no" title="statement not covered" > locale = req.locale;</span>
|
|
1903
|
-
}
|
|
1904
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!req.query.aposMode) {
|
|
1905
|
-
req.mode = mode;
|
|
1906
|
-
} else {
|
|
1907
|
-
<span class="cstat-no" title="statement not covered" > mode = req.mode;</span>
|
|
1908
|
-
}
|
|
1909
|
-
} else {
|
|
1910
|
-
// aposDocId was passed, complete the _id from whatever
|
|
1911
|
-
// was in query params or defaults
|
|
1912
|
-
locale = req.locale;
|
|
1913
|
-
mode = req.mode;
|
|
1914
|
-
}
|
|
1915
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if ((req.mode === 'draft') && (!self.apos.permission.can(req, 'view-draft'))) {
|
|
1916
|
-
<span class="cstat-no" title="statement not covered" > throw self.apos.error('forbidden');</span>
|
|
1917
|
-
}
|
|
1918
|
-
if (_id.charAt(0) === '_') {
|
|
1919
|
-
// A shortcut such as _home or _archive,
|
|
1920
|
-
// will be interpreted later
|
|
1921
|
-
return _id;
|
|
1922
|
-
} else {
|
|
1923
|
-
return `${cuid}:${locale}:${mode}`;
|
|
1924
|
-
}
|
|
1925
|
-
},
|
|
1926
|
-
getBrowserData(req) {
|
|
1927
|
-
const i18n = {
|
|
1928
|
-
[req.locale]: self.getBrowserBundles(req.locale)
|
|
1929
|
-
};
|
|
1930
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (req.locale !== self.defaultLocale) {
|
|
1931
|
-
<span class="cstat-no" title="statement not covered" > i18n[self.defaultLocale] = self.getBrowserBundles(self.defaultLocale);</span>
|
|
1932
|
-
}
|
|
1933
|
-
// In case the default locale also has inadequate admin UI phrases
|
|
1934
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!i18n.en) {
|
|
1935
|
-
<span class="cstat-no" title="statement not covered" > i18n.en = self.getBrowserBundles('en');</span>
|
|
1936
|
-
}
|
|
1937
|
-
const result = {
|
|
1938
|
-
i18n,
|
|
1939
|
-
locale: req.locale,
|
|
1940
|
-
defaultLocale: self.defaultLocale,
|
|
1941
|
-
defaultNamespace: self.defaultNamespace,
|
|
1942
|
-
locales: self.locales,
|
|
1943
|
-
debug: self.debug,
|
|
1944
|
-
show: self.show,
|
|
1945
|
-
action: self.action,
|
|
1946
|
-
crossDomainClipboard: req.session && req.session.aposCrossDomainClipboard
|
|
1947
|
-
};
|
|
1948
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (req.session && req.session.aposCrossDomainClipboard) {
|
|
1949
|
-
<span class="cstat-no" title="statement not covered" > req.session.aposCrossDomainClipboard = null;</span>
|
|
1950
|
-
}
|
|
1951
|
-
return result;
|
|
1952
|
-
},
|
|
1953
|
-
getBrowserBundles(locale) {
|
|
1954
|
-
const i18n = {};
|
|
1955
|
-
for (const [ name, options ] of Object.entries(self.namespaces)) {
|
|
1956
|
-
if (options.browser) {
|
|
1957
|
-
i18n[name] = self.i18next.getResourceBundle(locale, name);
|
|
1958
|
-
}
|
|
1959
|
-
}
|
|
1960
|
-
return i18n;
|
|
1961
|
-
},
|
|
1962
|
-
getLocales() {
|
|
1963
|
-
const locales = self.options.locales || {
|
|
1964
|
-
en: {
|
|
1965
|
-
label: 'English'
|
|
1966
|
-
}
|
|
1967
|
-
};
|
|
1968
|
-
const taken = {};
|
|
1969
|
-
let hostnamesCount = 0;
|
|
1970
|
-
for (const [ name, options ] of Object.entries(locales)) {
|
|
1971
|
-
const key = (options.hostname || '__none') + ':' + (options.prefix || '__none');
|
|
1972
|
-
hostnamesCount += (options.hostname ? 1 : 0);
|
|
1973
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (taken[key]) {
|
|
1974
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(stripIndent`</span>
|
|
1975
|
-
@apostrophecms/i18n: the locale ${name} cannot be distinguished from
|
|
1976
|
-
earlier locales. Make sure it is uniquely distinguished by its hostname
|
|
1977
|
-
option, prefix option or a combination of the two. One locale per site
|
|
1978
|
-
may be a default with neither hostname nor prefix, and one locale per
|
|
1979
|
-
hostname may be a default for that hostname without a prefix.
|
|
1980
|
-
`);
|
|
1981
|
-
}
|
|
1982
|
-
taken[key] = true;
|
|
1983
|
-
}
|
|
1984
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if ((hostnamesCount > 0) && (hostnamesCount < Object.keys(locales).length) && (!self.apos.options.baseUrl)) {
|
|
1985
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(stripIndent`</span>
|
|
1986
|
-
If some of your locales have hostnames, then they all must have
|
|
1987
|
-
hostnames, or your top-level baseUrl option must be set.
|
|
1988
|
-
|
|
1989
|
-
In development, you can set baseUrl to http://localhost:3000
|
|
1990
|
-
for testing purposes. In production it should always be set
|
|
1991
|
-
to a real base URL for the site.
|
|
1992
|
-
`);
|
|
1993
|
-
}
|
|
1994
|
-
// Make sure they are adequately distinguished by
|
|
1995
|
-
// hostname and prefix
|
|
1996
|
-
return locales;
|
|
1997
|
-
},
|
|
1998
|
-
sanitizeLocaleName(locale) {
|
|
1999
|
-
locale = self.apos.launder.string(locale);
|
|
2000
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!has(self.locales, locale)) {
|
|
2001
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
2002
|
-
}
|
|
2003
|
-
return locale;
|
|
2004
|
-
},
|
|
2005
|
-
addLocalizeModal() {
|
|
2006
|
-
self.apos.modal.add(
|
|
2007
|
-
`${self.__meta.name}:localize`,
|
|
2008
|
-
self.getComponentName('localizeModal', 'AposI18nLocalize'),
|
|
2009
|
-
{ moduleName: self.__meta.name }
|
|
2010
|
-
);
|
|
2011
|
-
},
|
|
2012
|
-
setPrefixUrls(req) {
|
|
2013
|
-
// In a production-like environment, use req.hostname, otherwise the Host header
|
|
2014
|
-
// to allow port numbers in dev.
|
|
2015
|
-
//
|
|
2016
|
-
// Watch out for modules that won't be set up if this is an afterInit task in an
|
|
2017
|
-
// early module like the asset module
|
|
2018
|
-
const host = (process.env.NODE_ENV === 'production') ? req.hostname : req.get('Host');
|
|
2019
|
-
const fallbackBaseUrl = `${req.protocol}://${host}`;
|
|
2020
|
-
if (self.hostnamesInUse) {
|
|
2021
|
-
req.baseUrl = (self.apos.page && self.apos.page.getBaseUrl(req)) || <span class="branch-2 cbranch-no" title="branch not covered" >fallbackBaseUrl;</span>
|
|
2022
|
-
} else {
|
|
2023
|
-
req.baseUrl = self.apos.page && self.apos.page.getBaseUrl(req);
|
|
2024
|
-
}
|
|
2025
|
-
req.baseUrlWithPrefix = `${req.baseUrl}${self.apos.prefix}`;
|
|
2026
|
-
req.absoluteUrl = req.baseUrlWithPrefix + req.url;
|
|
2027
|
-
req.prefix = `${req.baseUrlWithPrefix}${self.locales[req.locale].prefix || ''}`;
|
|
2028
|
-
if (!req.baseUrl) {
|
|
2029
|
-
// Always set for bc, but in the absence of locale hostnames we
|
|
2030
|
-
// set it later so it is not part of req.prefix
|
|
2031
|
-
req.baseUrl = fallbackBaseUrl;
|
|
2032
|
-
}
|
|
2033
|
-
},
|
|
2034
|
-
// Returns an Express route suitable for use in a module
|
|
2035
|
-
// like a piece type or the page module. The returned route will
|
|
2036
|
-
// expect req.params._id and req.params.toLocale and redirect,
|
|
2037
|
-
// if possible, to the corresponding version in toLocale.
|
|
2038
|
-
toLocaleRouteFactory(module) {
|
|
2039
|
-
return <span class="fstat-no" title="function not covered" >as</span>ync (req, res) => {
|
|
2040
|
-
const _id = <span class="cstat-no" title="statement not covered" >module.inferIdLocaleAndMode(req, req.params._id);</span>
|
|
2041
|
-
const toLocale = <span class="cstat-no" title="statement not covered" >req.params.toLocale;</span>
|
|
2042
|
-
const localeReq = <span class="cstat-no" title="statement not covered" >req.clone({</span>
|
|
2043
|
-
locale: toLocale
|
|
2044
|
-
});
|
|
2045
|
-
const corresponding = <span class="cstat-no" title="statement not covered" >await module.find(localeReq, {</span>
|
|
2046
|
-
_id: `${_id.split(':')[0]}:${localeReq.locale}:${localeReq.mode}`
|
|
2047
|
-
}).toObject();
|
|
2048
|
-
<span class="cstat-no" title="statement not covered" > if (!corresponding) {</span>
|
|
2049
|
-
<span class="cstat-no" title="statement not covered" > return res.status(404).send('not found');</span>
|
|
2050
|
-
}
|
|
2051
|
-
<span class="cstat-no" title="statement not covered" > if (!corresponding._url) {</span>
|
|
2052
|
-
<span class="cstat-no" title="statement not covered" > return res.status(400).send('invalid (has no URL)');</span>
|
|
2053
|
-
}
|
|
2054
|
-
<span class="cstat-no" title="statement not covered" > return res.redirect(corresponding._url);</span>
|
|
2055
|
-
};
|
|
2056
|
-
}
|
|
2057
|
-
};
|
|
2058
|
-
}
|
|
2059
|
-
};
|
|
2060
|
-
|
|
2061
|
-
function has(o, k) {
|
|
2062
|
-
return Object.prototype.hasOwnProperty.call(o, k);
|
|
2063
|
-
}
|
|
2064
|
-
</pre></td></tr></table></pre>
|
|
2065
|
-
|
|
2066
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
2067
|
-
</div><!-- /wrapper -->
|
|
2068
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
2069
|
-
Code coverage generated by
|
|
2070
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2071
|
-
at Wed Jun 08 2022 11:06:49 GMT+0200 (Central European Summer Time)
|
|
2072
|
-
</div>
|
|
2073
|
-
<script src="../../../../prettify.js"></script>
|
|
2074
|
-
<script>
|
|
2075
|
-
window.onload = function () {
|
|
2076
|
-
prettyPrint();
|
|
2077
|
-
};
|
|
2078
|
-
</script>
|
|
2079
|
-
<script src="../../../../sorter.js"></script>
|
|
2080
|
-
<script src="../../../../block-navigation.js"></script>
|
|
2081
|
-
</body>
|
|
2082
|
-
</html>
|
|
2083
|
-
|