@budibase/server 2.3.20 → 2.3.21-alpha.0
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/__mocks__/aws-sdk.ts +1 -1
- package/__mocks__/node-fetch.ts +3 -0
- package/builder/assets/blankScreenPreview.72634dd1.png +0 -0
- package/builder/assets/{index.3faec52d.js → index.90fba548.js} +439 -426
- package/builder/assets/index.b24b9dea.css +6 -0
- package/builder/assets/listScreenPreview.599c0aae.png +0 -0
- package/builder/index.html +2 -2
- package/dist/api/controllers/automation.js +11 -2
- package/dist/api/controllers/cloud.js +2 -2
- package/dist/api/controllers/query/index.js +2 -0
- package/dist/api/controllers/row/ExternalRequest.js +50 -23
- package/dist/api/controllers/row/external.js +12 -1
- package/dist/api/controllers/row/internalSearch.js +6 -450
- package/dist/api/controllers/row/utils.js +1 -3
- package/dist/api/controllers/table/external.js +8 -8
- package/dist/api/index.js +1 -21
- package/dist/api/routes/automation.js +1 -1
- package/dist/api/routes/public/applications.js +7 -7
- package/dist/api/routes/public/queries.js +2 -2
- package/dist/api/routes/public/rows.js +5 -5
- package/dist/api/routes/public/tables.js +5 -5
- package/dist/api/routes/public/users.js +5 -5
- package/dist/app.js +9 -1
- package/dist/constants/index.js +4 -24
- package/dist/db/defaultData/datasource_bb_default.js +6 -5
- package/dist/db/index.js +25 -2
- package/dist/db/linkedRows/LinkController.js +9 -8
- package/dist/db/utils.js +2 -5
- package/dist/db/views/staticViews.js +2 -1
- package/dist/ddApm.js +11 -0
- package/dist/elasticApm.js +14 -0
- package/dist/integrations/base/sql.js +6 -3
- package/dist/integrations/googlesheets.js +17 -20
- package/dist/middleware/authorized.js +5 -3
- package/dist/middleware/builder.js +6 -3
- package/dist/migrations/functions/backfill/global/configs.js +10 -4
- package/dist/migrations/tests/helpers.js +1 -1
- package/dist/migrations/tests/structures.js +1 -1
- package/dist/package.json +14 -9
- package/dist/sdk/app/backups/constants.js +2 -1
- package/dist/sdk/app/backups/exports.js +20 -7
- package/dist/sdk/app/datasources/datasources.js +3 -0
- package/dist/sdk/app/rows/attachments.js +1 -1
- package/dist/startup.js +3 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/redis.js +2 -0
- package/dist/utilities/retry.js +30 -0
- package/jest-testcontainers-config.js +8 -0
- package/jest.config.ts +35 -22
- package/package.json +15 -10
- package/scripts/load/create-many-apps.js +24 -0
- package/scripts/load/create-many-rows.js +30 -0
- package/scripts/load/utils.js +66 -0
- package/scripts/test.sh +12 -0
- package/specs/{generate.js → generate.ts} +7 -9
- package/specs/openapi.json +30 -30
- package/specs/openapi.yaml +27 -27
- package/specs/{parameters.js → parameters.ts} +6 -6
- package/specs/resources/{application.js → application.ts} +4 -4
- package/specs/resources/{index.js → index.ts} +8 -8
- package/specs/resources/{misc.js → misc.ts} +3 -3
- package/specs/resources/{query.js → query.ts} +4 -4
- package/specs/resources/{row.js → row.ts} +3 -4
- package/specs/resources/{table.js → table.ts} +5 -5
- package/specs/resources/{user.js → user.ts} +3 -3
- package/specs/resources/utils/Resource.ts +39 -0
- package/specs/resources/utils/{index.js → index.ts} +1 -1
- package/specs/{security.js → security.ts} +1 -1
- package/src/api/controllers/automation.ts +13 -2
- package/src/api/controllers/cloud.ts +2 -2
- package/src/api/controllers/query/import/tests/index.spec.js +1 -1
- package/src/api/controllers/query/index.ts +2 -0
- package/src/api/controllers/row/ExternalRequest.ts +98 -27
- package/src/api/controllers/row/external.ts +13 -1
- package/src/api/controllers/row/internalSearch.ts +11 -524
- package/src/api/controllers/row/utils.ts +1 -2
- package/src/api/controllers/table/external.ts +3 -2
- package/src/api/index.ts +3 -22
- package/src/api/routes/automation.ts +1 -1
- package/src/api/routes/public/applications.ts +7 -8
- package/src/api/routes/public/queries.ts +2 -2
- package/src/api/routes/public/rows.ts +5 -5
- package/src/api/routes/public/tables.ts +5 -5
- package/src/api/routes/public/tests/{compare.spec.js → compare.spec.ts} +45 -26
- package/src/api/routes/public/tests/users.spec.js +1 -1
- package/src/api/routes/public/tests/utils.ts +25 -8
- package/src/api/routes/public/users.ts +5 -5
- package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
- package/src/api/routes/tests/analytics.spec.js +4 -1
- package/src/api/routes/tests/apikeys.spec.js +1 -1
- package/src/api/routes/tests/application.spec.ts +20 -6
- package/src/api/routes/tests/auth.spec.js +2 -2
- package/src/api/routes/tests/automation.spec.js +6 -2
- package/src/api/routes/tests/backup.spec.ts +4 -14
- package/src/api/routes/tests/cloud.spec.ts +20 -31
- package/src/api/routes/tests/component.spec.js +1 -1
- package/src/api/routes/tests/datasource.spec.ts +20 -3
- package/src/api/routes/tests/dev.spec.js +1 -1
- package/src/api/routes/tests/environmentVariables.spec.ts +144 -0
- package/src/api/routes/tests/integration.spec.js +1 -1
- package/src/api/routes/tests/layout.spec.js +1 -1
- package/src/api/routes/tests/metadata.spec.js +1 -1
- package/src/api/routes/tests/misc.spec.js +1 -1
- package/src/api/routes/tests/permissions.spec.js +4 -1
- package/src/api/routes/tests/{query.spec.js → query.seq.spec.js} +22 -1
- package/src/api/routes/tests/role.spec.js +6 -1
- package/src/api/routes/tests/routing.spec.js +1 -1
- package/src/api/routes/tests/row.spec.js +11 -3
- package/src/api/routes/tests/screen.spec.js +1 -1
- package/src/api/routes/tests/static.spec.js +2 -13
- package/src/api/routes/tests/table.spec.js +1 -1
- package/src/api/routes/tests/templates.spec.js +1 -1
- package/src/api/routes/tests/user.spec.js +11 -12
- package/src/api/routes/tests/utilities/TestFunctions.ts +25 -3
- package/src/api/routes/tests/utilities/index.ts +5 -3
- package/src/api/routes/tests/view.spec.js +4 -1
- package/src/api/routes/tests/webhook.spec.js +11 -2
- package/src/app.ts +12 -1
- package/src/automations/tests/automation.spec.js +4 -4
- package/src/automations/tests/bash.spec.js +1 -1
- package/src/automations/tests/discord.spec.js +1 -1
- package/src/automations/tests/executeQuery.spec.js +2 -3
- package/src/automations/tests/executeScript.spec.js +1 -1
- package/src/automations/tests/outgoingWebhook.spec.js +1 -1
- package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
- package/src/automations/tests/serverLog.spec.js +1 -1
- package/src/automations/tests/updateRow.spec.js +1 -1
- package/src/automations/tests/zapier.spec.js +1 -1
- package/src/constants/index.ts +1 -23
- package/src/db/defaultData/datasource_bb_default.ts +6 -10
- package/src/db/index.ts +2 -2
- package/src/db/linkedRows/LinkController.ts +2 -1
- package/src/db/tests/linkController.spec.js +4 -1
- package/src/db/tests/linkTests.spec.js +1 -1
- package/src/db/utils.ts +0 -4
- package/src/db/views/staticViews.ts +3 -3
- package/src/ddApm.ts +7 -0
- package/src/definitions/openapi.ts +449 -63
- package/src/elasticApm.ts +10 -0
- package/src/integration-test/postgres.spec.ts +1032 -0
- package/src/integrations/base/sql.ts +11 -5
- package/src/integrations/googlesheets.ts +21 -22
- package/src/integrations/oracle.ts +1 -1
- package/src/integrations/tests/couchdb.spec.ts +0 -2
- package/src/integrations/tests/googlesheets.spec.ts +122 -0
- package/src/middleware/authorized.ts +6 -4
- package/src/middleware/builder.ts +8 -3
- package/src/migrations/functions/backfill/global/configs.ts +15 -9
- package/src/migrations/functions/tests/appUrls.spec.js +1 -1
- package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +4 -5
- package/src/migrations/tests/helpers.ts +2 -2
- package/src/migrations/tests/index.spec.ts +13 -20
- package/src/migrations/tests/structures.ts +1 -0
- package/src/sdk/app/backups/constants.ts +1 -0
- package/src/sdk/app/backups/exports.ts +32 -10
- package/src/sdk/app/datasources/datasources.ts +3 -0
- package/src/sdk/app/rows/attachments.ts +1 -1
- package/src/startup.ts +4 -1
- package/src/tests/jestEnv.ts +9 -11
- package/src/tests/jestSetup.ts +9 -7
- package/src/tests/logging.ts +34 -0
- package/src/tests/utilities/TestConfiguration.ts +187 -101
- package/src/tests/utilities/structures.ts +16 -4
- package/src/utilities/redis.ts +2 -0
- package/src/utilities/retry.ts +18 -0
- package/tsconfig.build.json +1 -0
- package/builder/assets/index.4488f38d.css +0 -6
- package/coverage/clover.xml +0 -11774
- package/coverage/coverage-final.json +0 -284
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -1031
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +0 -247
- package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -1987
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +0 -940
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +0 -442
- package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +0 -1135
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -262
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -694
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +0 -472
- package/coverage/lcov-report/src/api/controllers/index.html +0 -431
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +0 -124
- package/coverage/lcov-report/src/api/controllers/layout.ts.html +0 -226
- package/coverage/lcov-report/src/api/controllers/metadata.ts.html +0 -211
- package/coverage/lcov-report/src/api/controllers/migrations.ts.html +0 -127
- package/coverage/lcov-report/src/api/controllers/permission.ts.html +0 -619
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -499
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -136
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -385
- package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +0 -163
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -325
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
- package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -1000
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +0 -235
- package/coverage/lcov-report/src/api/controllers/role.ts.html +0 -397
- package/coverage/lcov-report/src/api/controllers/routing.ts.html +0 -370
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2305
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +0 -931
- package/coverage/lcov-report/src/api/controllers/row/index.html +0 -206
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +0 -1609
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +0 -1678
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +0 -595
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +0 -556
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
- package/coverage/lcov-report/src/api/controllers/script.ts.html +0 -121
- package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -679
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +0 -649
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +0 -1153
- package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +0 -514
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -658
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1273
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +0 -214
- package/coverage/lcov-report/src/api/controllers/user.ts.html +0 -634
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +0 -214
- package/coverage/lcov-report/src/api/controllers/view/index.html +0 -161
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +0 -661
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +0 -580
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +0 -694
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -385
- package/coverage/lcov-report/src/api/index.html +0 -116
- package/coverage/lcov-report/src/api/index.ts.html +0 -352
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +0 -112
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +0 -121
- package/coverage/lcov-report/src/api/routes/application.ts.html +0 -256
- package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
- package/coverage/lcov-report/src/api/routes/automation.ts.html +0 -346
- package/coverage/lcov-report/src/api/routes/backup.ts.html +0 -127
- package/coverage/lcov-report/src/api/routes/cloud.ts.html +0 -139
- package/coverage/lcov-report/src/api/routes/component.ts.html +0 -127
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +0 -265
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -145
- package/coverage/lcov-report/src/api/routes/dev.ts.html +0 -199
- package/coverage/lcov-report/src/api/routes/index.html +0 -551
- package/coverage/lcov-report/src/api/routes/index.ts.html +0 -298
- package/coverage/lcov-report/src/api/routes/integration.ts.html +0 -133
- package/coverage/lcov-report/src/api/routes/layout.ts.html +0 -133
- package/coverage/lcov-report/src/api/routes/metadata.ts.html +0 -199
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
- package/coverage/lcov-report/src/api/routes/permission.ts.html +0 -208
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -673
- package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -493
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -340
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
- package/coverage/lcov-report/src/api/routes/public/tests/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +0 -169
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/query.ts.html +0 -268
- package/coverage/lcov-report/src/api/routes/role.ts.html +0 -157
- package/coverage/lcov-report/src/api/routes/routing.ts.html +0 -127
- package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
- package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
- package/coverage/lcov-report/src/api/routes/script.ts.html +0 -115
- package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
- package/coverage/lcov-report/src/api/routes/table.ts.html +0 -595
- package/coverage/lcov-report/src/api/routes/templates.ts.html +0 -133
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +0 -367
- package/coverage/lcov-report/src/api/routes/user.ts.html +0 -238
- package/coverage/lcov-report/src/api/routes/utils/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +0 -805
- package/coverage/lcov-report/src/api/routes/view.ts.html +0 -187
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +0 -166
- package/coverage/lcov-report/src/app.ts.html +0 -424
- package/coverage/lcov-report/src/automations/actions.ts.html +0 -316
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +0 -562
- package/coverage/lcov-report/src/automations/bullboard.ts.html +0 -199
- package/coverage/lcov-report/src/automations/index.html +0 -191
- package/coverage/lcov-report/src/automations/index.ts.html +0 -163
- package/coverage/lcov-report/src/automations/logging/index.html +0 -116
- package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +0 -319
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -382
- package/coverage/lcov-report/src/automations/steps/delay.ts.html +0 -217
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -349
- package/coverage/lcov-report/src/automations/steps/discord.ts.html +0 -397
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +0 -370
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +0 -325
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +0 -394
- package/coverage/lcov-report/src/automations/steps/index.html +0 -371
- package/coverage/lcov-report/src/automations/steps/integromat.ts.html +0 -409
- package/coverage/lcov-report/src/automations/steps/loop.ts.html +0 -241
- package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +0 -499
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +0 -664
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +0 -355
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +0 -256
- package/coverage/lcov-report/src/automations/steps/slack.ts.html +0 -340
- package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +0 -439
- package/coverage/lcov-report/src/automations/steps/utils.ts.html +0 -223
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +0 -403
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +0 -265
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +0 -196
- package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +0 -193
- package/coverage/lcov-report/src/automations/triggerInfo/index.html +0 -206
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +0 -130
- package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +0 -196
- package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +0 -220
- package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +0 -220
- package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +0 -208
- package/coverage/lcov-report/src/automations/triggers.ts.html +0 -553
- package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
- package/coverage/lcov-report/src/constants/index.html +0 -146
- package/coverage/lcov-report/src/constants/index.ts.html +0 -697
- package/coverage/lcov-report/src/constants/layouts.ts.html +0 -526
- package/coverage/lcov-report/src/constants/screens.ts.html +0 -229
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +0 -2059
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +0 -541
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +0 -427
- package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +0 -403
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +0 -559
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +0 -526
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +0 -250
- package/coverage/lcov-report/src/db/index.html +0 -176
- package/coverage/lcov-report/src/db/index.ts.html +0 -133
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +0 -1417
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +0 -265
- package/coverage/lcov-report/src/db/linkedRows/index.html +0 -161
- package/coverage/lcov-report/src/db/linkedRows/index.ts.html +0 -736
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +0 -460
- package/coverage/lcov-report/src/db/newid.ts.html +0 -100
- package/coverage/lcov-report/src/db/utils.ts.html +0 -913
- package/coverage/lcov-report/src/definitions/automations.ts.html +0 -184
- package/coverage/lcov-report/src/definitions/index.html +0 -116
- package/coverage/lcov-report/src/environment.ts.html +0 -472
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +0 -259
- package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +0 -172
- package/coverage/lcov-report/src/events/index.html +0 -161
- package/coverage/lcov-report/src/events/index.ts.html +0 -100
- package/coverage/lcov-report/src/events/utils.ts.html +0 -319
- package/coverage/lcov-report/src/index.html +0 -191
- package/coverage/lcov-report/src/index.ts.html +0 -133
- package/coverage/lcov-report/src/integrations/airtable.ts.html +0 -529
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
- package/coverage/lcov-report/src/integrations/base/index.html +0 -161
- package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -139
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -2017
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -484
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +0 -745
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -646
- package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1315
- package/coverage/lcov-report/src/integrations/index.html +0 -371
- package/coverage/lcov-report/src/integrations/index.ts.html +0 -460
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1012
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1999
- package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -979
- package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1387
- package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1087
- package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -328
- package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
- package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1372
- package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
- package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +0 -85
- package/coverage/lcov-report/src/integrations/tests/index.html +0 -116
- package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1036
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +0 -145
- package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -472
- package/coverage/lcov-report/src/middleware/builder.ts.html +0 -361
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +0 -508
- package/coverage/lcov-report/src/middleware/index.html +0 -236
- package/coverage/lcov-report/src/middleware/joi-validator.ts.html +0 -205
- package/coverage/lcov-report/src/middleware/publicApi.ts.html +0 -148
- package/coverage/lcov-report/src/middleware/resourceId.ts.html +0 -283
- package/coverage/lcov-report/src/middleware/selfhost.ts.html +0 -121
- package/coverage/lcov-report/src/middleware/utils.ts.html +0 -112
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -166
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -286
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
- package/coverage/lcov-report/src/migrations/functions/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +0 -520
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
- package/coverage/lcov-report/src/migrations/index.html +0 -116
- package/coverage/lcov-report/src/migrations/index.ts.html +0 -430
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
- package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
- package/coverage/lcov-report/src/sdk/app/applications/index.html +0 -146
- package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +0 -106
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +0 -268
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +0 -136
- package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -640
- package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
- package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +0 -562
- package/coverage/lcov-report/src/sdk/app/datasources/index.html +0 -131
- package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +0 -100
- package/coverage/lcov-report/src/sdk/app/queries/index.html +0 -131
- package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +0 -100
- package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +0 -235
- package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +0 -265
- package/coverage/lcov-report/src/sdk/app/rows/index.html +0 -146
- package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +0 -106
- package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +0 -139
- package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -274
- package/coverage/lcov-report/src/sdk/index.html +0 -116
- package/coverage/lcov-report/src/sdk/index.ts.html +0 -151
- package/coverage/lcov-report/src/sdk/users/index.html +0 -131
- package/coverage/lcov-report/src/sdk/users/index.ts.html +0 -100
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +0 -277
- package/coverage/lcov-report/src/sdk/utils/index.html +0 -116
- package/coverage/lcov-report/src/sdk/utils/index.ts.html +0 -133
- package/coverage/lcov-report/src/startup.ts.html +0 -484
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +0 -2032
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +0 -127
- package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +0 -118
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +0 -856
- package/coverage/lcov-report/src/threads/automation.ts.html +0 -1555
- package/coverage/lcov-report/src/threads/index.html +0 -161
- package/coverage/lcov-report/src/threads/index.ts.html +0 -418
- package/coverage/lcov-report/src/threads/query.ts.html +0 -1000
- package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
- package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +0 -94
- package/coverage/lcov-report/src/utilities/centralPath.ts.html +0 -151
- package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +0 -547
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -601
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +0 -206
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +0 -100
- package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -277
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +0 -142
- package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
- package/coverage/lcov-report/src/utilities/global.ts.html +0 -499
- package/coverage/lcov-report/src/utilities/index.html +0 -251
- package/coverage/lcov-report/src/utilities/index.ts.html +0 -487
- package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
- package/coverage/lcov-report/src/utilities/routing/index.html +0 -116
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +0 -922
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +0 -373
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +0 -373
- package/coverage/lcov-report/src/utilities/schema.ts.html +0 -508
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +0 -169
- package/coverage/lcov-report/src/utilities/security.ts.html +0 -280
- package/coverage/lcov-report/src/utilities/usageQuota/index.html +0 -131
- package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +0 -325
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +0 -139
- package/coverage/lcov-report/src/utilities/users.ts.html +0 -232
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +0 -646
- package/coverage/lcov-report/src/watch.ts.html +0 -196
- package/coverage/lcov-report/src/websocket.ts.html +0 -163
- package/coverage/lcov.info +0 -21777
- package/dist/api/routes/public/tests/utils.js +0 -33
- package/dist/integrations/base/utils.js +0 -16
- package/specs/resources/utils/Resource.js +0 -26
- package/src/integrations/base/utils.ts +0 -12
|
@@ -1,1987 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/api/controllers/application.ts</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">src/api/controllers</a> application.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">89.65% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>260/290</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">64.28% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>54/84</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">94.54% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>52/55</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">89.28% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>250/280</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 high'></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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
|
|
701
|
-
<span class="cline-any cline-yes">55x</span>
|
|
702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-yes">55x</span>
|
|
707
|
-
<span class="cline-any cline-yes">55x</span>
|
|
708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-yes">55x</span>
|
|
716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-yes">55x</span>
|
|
727
|
-
<span class="cline-any cline-yes">55x</span>
|
|
728
|
-
<span class="cline-any cline-yes">55x</span>
|
|
729
|
-
<span class="cline-any cline-yes">55x</span>
|
|
730
|
-
<span class="cline-any cline-yes">55x</span>
|
|
731
|
-
<span class="cline-any cline-yes">55x</span>
|
|
732
|
-
<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-yes">55x</span>
|
|
738
|
-
<span class="cline-any cline-yes">55x</span>
|
|
739
|
-
<span class="cline-any cline-yes">55x</span>
|
|
740
|
-
<span class="cline-any cline-yes">55x</span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-yes">55x</span>
|
|
750
|
-
<span class="cline-any cline-yes">55x</span>
|
|
751
|
-
<span class="cline-any cline-yes">55x</span>
|
|
752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
755
|
-
<span class="cline-any cline-yes">8x</span>
|
|
756
|
-
<span class="cline-any cline-yes">8x</span>
|
|
757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
760
|
-
<span class="cline-any cline-neutral"> </span>
|
|
761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-yes">2x</span>
|
|
763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-yes">8x</span>
|
|
767
|
-
<span class="cline-any cline-yes">8x</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-neutral"> </span>
|
|
773
|
-
<span class="cline-any cline-yes">1x</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-yes">1x</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-neutral"> </span>
|
|
782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-yes">298x</span>
|
|
789
|
-
<span class="cline-any cline-yes">4x</span>
|
|
790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-yes">1317x</span>
|
|
792
|
-
<span class="cline-any cline-no"> </span>
|
|
793
|
-
<span class="cline-any cline-neutral"> </span>
|
|
794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
803
|
-
<span class="cline-any cline-yes">298x</span>
|
|
804
|
-
<span class="cline-any cline-no"> </span>
|
|
805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
806
|
-
<span class="cline-any cline-yes">298x</span>
|
|
807
|
-
<span class="cline-any cline-yes">4x</span>
|
|
808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
809
|
-
<span class="cline-any cline-yes">1317x</span>
|
|
810
|
-
<span class="cline-any cline-no"> </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-yes">295x</span>
|
|
820
|
-
<span class="cline-any cline-yes">295x</span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-neutral"> </span>
|
|
823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
825
|
-
<span class="cline-any cline-neutral"> </span>
|
|
826
|
-
<span class="cline-any cline-neutral"> </span>
|
|
827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-yes">295x</span>
|
|
830
|
-
<span class="cline-any cline-yes">295x</span>
|
|
831
|
-
<span class="cline-any cline-yes">295x</span>
|
|
832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
833
|
-
<span class="cline-any cline-neutral"> </span>
|
|
834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
835
|
-
<span class="cline-any cline-yes">295x</span>
|
|
836
|
-
<span class="cline-any cline-yes">1x</span>
|
|
837
|
-
<span class="cline-any cline-yes">1x</span>
|
|
838
|
-
<span class="cline-any cline-no"> </span>
|
|
839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
840
|
-
<span class="cline-any cline-yes">294x</span>
|
|
841
|
-
<span class="cline-any cline-yes">2x</span>
|
|
842
|
-
<span class="cline-any cline-neutral"> </span>
|
|
843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
844
|
-
<span class="cline-any cline-yes">292x</span>
|
|
845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
846
|
-
<span class="cline-any cline-yes">292x</span>
|
|
847
|
-
<span class="cline-any cline-neutral"> </span>
|
|
848
|
-
<span class="cline-any cline-no"> </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">295x</span>
|
|
853
|
-
<span class="cline-any cline-neutral"> </span>
|
|
854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
856
|
-
<span class="cline-any cline-no"> </span>
|
|
857
|
-
<span class="cline-any cline-neutral"> </span>
|
|
858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
859
|
-
<span class="cline-any cline-no"> </span>
|
|
860
|
-
<span class="cline-any cline-neutral"> </span>
|
|
861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
862
|
-
<span class="cline-any cline-yes">76x</span>
|
|
863
|
-
<span class="cline-any cline-yes">24x</span>
|
|
864
|
-
<span class="cline-any cline-yes">24x</span>
|
|
865
|
-
<span class="cline-any cline-yes">24x</span>
|
|
866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
867
|
-
<span class="cline-any cline-yes">24x</span>
|
|
868
|
-
<span class="cline-any cline-yes">31x</span>
|
|
869
|
-
<span class="cline-any cline-yes">31x</span>
|
|
870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
871
|
-
<span class="cline-any cline-yes">24x</span>
|
|
872
|
-
<span class="cline-any cline-yes">24x</span>
|
|
873
|
-
<span class="cline-any cline-yes">24x</span>
|
|
874
|
-
<span class="cline-any cline-yes">31x</span>
|
|
875
|
-
<span class="cline-any cline-yes">31x</span>
|
|
876
|
-
<span class="cline-any cline-no"> </span>
|
|
877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
879
|
-
<span class="cline-any cline-yes">31x</span>
|
|
880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-neutral"> </span>
|
|
883
|
-
<span class="cline-any cline-neutral"> </span>
|
|
884
|
-
<span class="cline-any cline-yes">24x</span>
|
|
885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
887
|
-
<span class="cline-any cline-yes">55x</span>
|
|
888
|
-
<span class="cline-any cline-yes">1x</span>
|
|
889
|
-
<span class="cline-any cline-yes">1x</span>
|
|
890
|
-
<span class="cline-any cline-yes">1x</span>
|
|
891
|
-
<span class="cline-any cline-yes">1x</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-yes">1x</span>
|
|
896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
900
|
-
<span class="cline-any cline-neutral"> </span>
|
|
901
|
-
<span class="cline-any cline-neutral"> </span>
|
|
902
|
-
<span class="cline-any cline-yes">59x</span>
|
|
903
|
-
<span class="cline-any cline-yes">6x</span>
|
|
904
|
-
<span class="cline-any cline-yes">6x</span>
|
|
905
|
-
<span class="cline-any cline-yes">6x</span>
|
|
906
|
-
<span class="cline-any cline-yes">6x</span>
|
|
907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
908
|
-
<span class="cline-any cline-neutral"> </span>
|
|
909
|
-
<span class="cline-any cline-yes">6x</span>
|
|
910
|
-
<span class="cline-any cline-neutral"> </span>
|
|
911
|
-
<span class="cline-any cline-neutral"> </span>
|
|
912
|
-
<span class="cline-any cline-neutral"> </span>
|
|
913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
914
|
-
<span class="cline-any cline-yes">6x</span>
|
|
915
|
-
<span class="cline-any cline-no"> </span>
|
|
916
|
-
<span class="cline-any cline-no"> </span>
|
|
917
|
-
<span class="cline-any cline-no"> </span>
|
|
918
|
-
<span class="cline-any cline-neutral"> </span>
|
|
919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
920
|
-
<span class="cline-any cline-yes">6x</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-yes">6x</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-neutral"> </span>
|
|
932
|
-
<span class="cline-any cline-neutral"> </span>
|
|
933
|
-
<span class="cline-any cline-neutral"> </span>
|
|
934
|
-
<span class="cline-any cline-yes">295x</span>
|
|
935
|
-
<span class="cline-any cline-yes">295x</span>
|
|
936
|
-
<span class="cline-any cline-yes">295x</span>
|
|
937
|
-
<span class="cline-any cline-yes">295x</span>
|
|
938
|
-
<span class="cline-any cline-yes">295x</span>
|
|
939
|
-
<span class="cline-any cline-yes">295x</span>
|
|
940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
941
|
-
<span class="cline-any cline-yes">295x</span>
|
|
942
|
-
<span class="cline-any cline-yes">295x</span>
|
|
943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
945
|
-
<span class="cline-any cline-neutral"> </span>
|
|
946
|
-
<span class="cline-any cline-neutral"> </span>
|
|
947
|
-
<span class="cline-any cline-yes">295x</span>
|
|
948
|
-
<span class="cline-any cline-yes">4x</span>
|
|
949
|
-
<span class="cline-any cline-neutral"> </span>
|
|
950
|
-
<span class="cline-any cline-yes">295x</span>
|
|
951
|
-
<span class="cline-any cline-yes">295x</span>
|
|
952
|
-
<span class="cline-any cline-yes">295x</span>
|
|
953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
954
|
-
<span class="cline-any cline-yes">295x</span>
|
|
955
|
-
<span class="cline-any cline-yes">295x</span>
|
|
956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
958
|
-
<span class="cline-any cline-neutral"> </span>
|
|
959
|
-
<span class="cline-any cline-neutral"> </span>
|
|
960
|
-
<span class="cline-any cline-yes">295x</span>
|
|
961
|
-
<span class="cline-any cline-neutral"> </span>
|
|
962
|
-
<span class="cline-any cline-yes">295x</span>
|
|
963
|
-
<span class="cline-any cline-neutral"> </span>
|
|
964
|
-
<span class="cline-any cline-neutral"> </span>
|
|
965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
966
|
-
<span class="cline-any cline-neutral"> </span>
|
|
967
|
-
<span class="cline-any cline-neutral"> </span>
|
|
968
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
973
|
-
<span class="cline-any cline-neutral"> </span>
|
|
974
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
980
|
-
<span class="cline-any cline-neutral"> </span>
|
|
981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
982
|
-
<span class="cline-any cline-neutral"> </span>
|
|
983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
986
|
-
<span class="cline-any cline-neutral"> </span>
|
|
987
|
-
<span class="cline-any cline-neutral"> </span>
|
|
988
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
997
|
-
<span class="cline-any cline-yes">295x</span>
|
|
998
|
-
<span class="cline-any cline-yes">295x</span>
|
|
999
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1007
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1010
|
-
<span class="cline-any cline-neutral"> </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-yes">1x</span>
|
|
1015
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1016
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1017
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1024
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1025
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1026
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1029
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1032
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1033
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1038
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1041
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1043
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1044
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1045
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1048
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
-
<span class="cline-any cline-no"> </span>
|
|
1053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1055
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1056
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1057
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1058
|
-
<span class="cline-any cline-yes">298x</span>
|
|
1059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1064
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1071
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1072
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1073
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1074
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1075
|
-
<span class="cline-any cline-no"> </span>
|
|
1076
|
-
<span class="cline-any cline-no"> </span>
|
|
1077
|
-
<span class="cline-any cline-no"> </span>
|
|
1078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-no"> </span>
|
|
1081
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
1087
|
-
<span class="cline-any cline-no"> </span>
|
|
1088
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1090
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1091
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1092
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1093
|
-
<span class="cline-any cline-yes">346x</span>
|
|
1094
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1095
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1096
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1097
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1098
|
-
<span class="cline-any cline-yes">295x</span>
|
|
1099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1102
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1103
|
-
<span class="cline-any cline-yes">56x</span>
|
|
1104
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1105
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1106
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1107
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1108
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1109
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1110
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1111
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1112
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1113
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1114
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1117
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1118
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1119
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1120
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1123
|
-
<span class="cline-any cline-yes">55x</span>
|
|
1124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1125
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1126
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1127
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1130
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1131
|
-
<span class="cline-any cline-no"> </span>
|
|
1132
|
-
<span class="cline-any cline-no"> </span>
|
|
1133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1135
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1136
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1137
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1141
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1142
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1143
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1144
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1147
|
-
<span class="cline-any cline-yes">55x</span>
|
|
1148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1150
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1151
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1152
|
-
<span class="cline-any cline-no"> </span>
|
|
1153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1156
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1157
|
-
<span class="cline-any cline-no"> </span>
|
|
1158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1161
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1162
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1163
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1167
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1168
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1169
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1170
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1171
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1173
|
-
<span class="cline-any cline-yes">55x</span>
|
|
1174
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1175
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1176
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1177
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1178
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1180
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1183
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1184
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1185
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1186
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1189
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1190
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1191
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1192
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1195
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1198
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1201
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1202
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1203
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1204
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1205
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1206
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1208
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1209
|
-
<span class="cline-any cline-no"> </span>
|
|
1210
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1212
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1213
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1214
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1215
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1218
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1219
|
-
<span class="cline-any cline-yes">33x</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-yes">33x</span>
|
|
1224
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1225
|
-
<span class="cline-any cline-yes">33x</span>
|
|
1226
|
-
<span class="cline-any cline-no"> </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-yes">82x</span>
|
|
1231
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1232
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1233
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1234
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1235
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1236
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1237
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1238
|
-
<span class="cline-any cline-yes">55x</span>
|
|
1239
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1240
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1241
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1242
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1243
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1244
|
-
<span class="cline-any cline-no"> </span>
|
|
1245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1247
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1248
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1249
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1250
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1251
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1252
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1253
|
-
<span class="cline-any cline-yes">55x</span>
|
|
1254
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1255
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1256
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1257
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1258
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1259
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1260
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1261
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1262
|
-
<span class="cline-any cline-no"> </span>
|
|
1263
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1264
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1265
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1267
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1268
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1269
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1270
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1274
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1275
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1277
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1278
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1279
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1281
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1282
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1283
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1284
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1285
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1286
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1287
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1288
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1290
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1291
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1292
|
-
<span class="cline-any cline-no"> </span>
|
|
1293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1294
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1295
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1296
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1297
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1298
|
-
<span class="cline-any cline-yes">1x</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">1x</span>
|
|
1303
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1304
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1305
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1306
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1307
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1308
|
-
<span class="cline-any cline-neutral"> </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">1x</span>
|
|
1317
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1318
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1319
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1320
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1321
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1322
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1323
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1324
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1325
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1326
|
-
<span class="cline-any cline-no"> </span>
|
|
1327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1329
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1331
|
-
<span class="cline-any cline-no"> </span>
|
|
1332
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1334
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import env from "../../environment"
|
|
1335
|
-
import packageJson from "../../../package.json"
|
|
1336
|
-
import {
|
|
1337
|
-
createLinkView,
|
|
1338
|
-
createRoutingView,
|
|
1339
|
-
createAllSearchIndex,
|
|
1340
|
-
} from "../../db/views/staticViews"
|
|
1341
|
-
import { createApp, deleteApp } from "../../utilities/fileSystem"
|
|
1342
|
-
import {
|
|
1343
|
-
generateAppID,
|
|
1344
|
-
getLayoutParams,
|
|
1345
|
-
getScreenParams,
|
|
1346
|
-
generateDevAppID,
|
|
1347
|
-
DocumentType,
|
|
1348
|
-
AppStatus,
|
|
1349
|
-
} from "../../db/utils"
|
|
1350
|
-
import {
|
|
1351
|
-
db as dbCore,
|
|
1352
|
-
roles,
|
|
1353
|
-
cache,
|
|
1354
|
-
tenancy,
|
|
1355
|
-
context,
|
|
1356
|
-
errors,
|
|
1357
|
-
events,
|
|
1358
|
-
migrations,
|
|
1359
|
-
objectStore,
|
|
1360
|
-
} from "@budibase/backend-core"
|
|
1361
|
-
import { USERS_TABLE_SCHEMA } from "../../constants"
|
|
1362
|
-
import { buildDefaultDocs } from "../../db/defaultData/datasource_bb_default"
|
|
1363
|
-
import { removeAppFromUserRoles } from "../../utilities/workerRequests"
|
|
1364
|
-
import { stringToReadStream, isQsTrue } from "../../utilities"
|
|
1365
|
-
import { getLocksById } from "../../utilities/redis"
|
|
1366
|
-
import {
|
|
1367
|
-
updateClientLibrary,
|
|
1368
|
-
backupClientLibrary,
|
|
1369
|
-
revertClientLibrary,
|
|
1370
|
-
} from "../../utilities/fileSystem"
|
|
1371
|
-
import { cleanupAutomations } from "../../automations/utils"
|
|
1372
|
-
import { checkAppMetadata } from "../../automations/logging"
|
|
1373
|
-
import { getUniqueRows } from "../../utilities/usageQuota/rows"
|
|
1374
|
-
import { quotas, groups } from "@budibase/pro"
|
|
1375
|
-
import {
|
|
1376
|
-
App,
|
|
1377
|
-
Layout,
|
|
1378
|
-
Screen,
|
|
1379
|
-
MigrationType,
|
|
1380
|
-
BBContext,
|
|
1381
|
-
Database,
|
|
1382
|
-
UserCtx,
|
|
1383
|
-
} from "@budibase/types"
|
|
1384
|
-
import { BASE_LAYOUT_PROP_IDS } from "../../constants/layouts"
|
|
1385
|
-
import sdk from "../../sdk"
|
|
1386
|
-
|
|
1387
|
-
// utility function, need to do away with this
|
|
1388
|
-
async function getLayouts() {
|
|
1389
|
-
const db = context.getAppDB()
|
|
1390
|
-
return (
|
|
1391
|
-
await db.allDocs(
|
|
1392
|
-
getLayoutParams(null, {
|
|
1393
|
-
include_docs: true,
|
|
1394
|
-
})
|
|
1395
|
-
)
|
|
1396
|
-
).rows.map((row: any) => row.doc)
|
|
1397
|
-
}
|
|
1398
|
-
|
|
1399
|
-
async function getScreens() {
|
|
1400
|
-
const db = context.getAppDB()
|
|
1401
|
-
return (
|
|
1402
|
-
await db.allDocs(
|
|
1403
|
-
getScreenParams(null, {
|
|
1404
|
-
include_docs: true,
|
|
1405
|
-
})
|
|
1406
|
-
)
|
|
1407
|
-
).rows.map((row: any) => row.doc)
|
|
1408
|
-
}
|
|
1409
|
-
|
|
1410
|
-
function getUserRoleId(ctx: BBContext) {
|
|
1411
|
-
return !ctx.user?.role || !ctx.user.role._id
|
|
1412
|
-
? <span class="branch-0 cbranch-no" title="branch not covered" >roles.BUILTIN_ROLE_IDS.PUBLIC</span>
|
|
1413
|
-
: ctx.user.role._id
|
|
1414
|
-
}
|
|
1415
|
-
|
|
1416
|
-
function checkAppUrl(
|
|
1417
|
-
ctx: BBContext,
|
|
1418
|
-
apps: App[],
|
|
1419
|
-
url: string,
|
|
1420
|
-
currentAppId?: string
|
|
1421
|
-
) {
|
|
1422
|
-
if (currentAppId) {
|
|
1423
|
-
apps = apps.filter((app: any) => app.appId !== currentAppId)
|
|
1424
|
-
}
|
|
1425
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (apps.some((app: any) => app.url === url)) {
|
|
1426
|
-
<span class="cstat-no" title="statement not covered" > ctx.throw(400, "App URL is already in use.")</span>
|
|
1427
|
-
}
|
|
1428
|
-
}
|
|
1429
|
-
|
|
1430
|
-
function checkAppName(
|
|
1431
|
-
ctx: BBContext,
|
|
1432
|
-
apps: App[],
|
|
1433
|
-
name: string,
|
|
1434
|
-
currentAppId?: string
|
|
1435
|
-
) {
|
|
1436
|
-
// TODO: Replace with Joi
|
|
1437
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!name) {
|
|
1438
|
-
<span class="cstat-no" title="statement not covered" > ctx.throw(400, "Name is required")</span>
|
|
1439
|
-
}
|
|
1440
|
-
if (currentAppId) {
|
|
1441
|
-
apps = apps.filter((app: any) => app.appId !== currentAppId)
|
|
1442
|
-
}
|
|
1443
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (apps.some((app: any) => app.name === name)) {
|
|
1444
|
-
<span class="cstat-no" title="statement not covered" > ctx.throw(400, "App name is already in use.")</span>
|
|
1445
|
-
}
|
|
1446
|
-
}
|
|
1447
|
-
|
|
1448
|
-
async function createInstance(
|
|
1449
|
-
appId: string,
|
|
1450
|
-
template: any,
|
|
1451
|
-
includeSampleData: boolean
|
|
1452
|
-
) {
|
|
1453
|
-
const db = context.getAppDB()
|
|
1454
|
-
await db.put({
|
|
1455
|
-
_id: "_design/database",
|
|
1456
|
-
// view collation information, read before writing any complex views:
|
|
1457
|
-
// https://docs.couchdb.org/en/master/ddocs/views/collation.html#collation-specification
|
|
1458
|
-
views: {},
|
|
1459
|
-
})
|
|
1460
|
-
|
|
1461
|
-
// NOTE: indexes need to be created before any tables/templates
|
|
1462
|
-
// add view for linked rows
|
|
1463
|
-
await createLinkView()
|
|
1464
|
-
await createRoutingView()
|
|
1465
|
-
await createAllSearchIndex()
|
|
1466
|
-
|
|
1467
|
-
// replicate the template data to the instance DB
|
|
1468
|
-
// this is currently very hard to test, downloading and importing template files
|
|
1469
|
-
if (template && template.templateString) {
|
|
1470
|
-
const { ok } = await db.load(stringToReadStream(template.templateString))
|
|
1471
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!ok) {
|
|
1472
|
-
<span class="cstat-no" title="statement not covered" > throw "Error loading database dump from memory."</span>
|
|
1473
|
-
}
|
|
1474
|
-
} else if (template && template.useTemplate === "true") {
|
|
1475
|
-
await sdk.backups.importApp(appId, db, template)
|
|
1476
|
-
} else {
|
|
1477
|
-
// create the users table
|
|
1478
|
-
await db.put(USERS_TABLE_SCHEMA)
|
|
1479
|
-
|
|
1480
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (includeSampleData) {
|
|
1481
|
-
// create ootb stock db
|
|
1482
|
-
<span class="cstat-no" title="statement not covered" > await addDefaultTables(db)</span>
|
|
1483
|
-
}
|
|
1484
|
-
}
|
|
1485
|
-
|
|
1486
|
-
return { _id: appId }
|
|
1487
|
-
}
|
|
1488
|
-
|
|
1489
|
-
async function <span class="fstat-no" title="function not covered" >addDefaultTables(d</span>b: Database) {
|
|
1490
|
-
const defaultDbDocs = <span class="cstat-no" title="statement not covered" >buildDefaultDocs()</span>
|
|
1491
|
-
|
|
1492
|
-
// add in the default db data docs - tables, datasource, rows and links
|
|
1493
|
-
<span class="cstat-no" title="statement not covered" > await db.bulkDocs([...defaultDbDocs])</span>
|
|
1494
|
-
}
|
|
1495
|
-
|
|
1496
|
-
export async function fetch(ctx: BBContext) {
|
|
1497
|
-
const dev = ctx.query && ctx.query.status === AppStatus.DEV
|
|
1498
|
-
const all = ctx.query && ctx.query.status === AppStatus.ALL
|
|
1499
|
-
const apps = (await dbCore.getAllApps({ dev, all })) as App[]
|
|
1500
|
-
|
|
1501
|
-
const appIds = apps
|
|
1502
|
-
.filter((app: any) => app.status === "development")
|
|
1503
|
-
.map((app: any) => app.appId)
|
|
1504
|
-
// get the locks for all the dev apps
|
|
1505
|
-
if (dev || all) {
|
|
1506
|
-
const locks = await getLocksById(appIds)
|
|
1507
|
-
for (let app of apps) {
|
|
1508
|
-
const lock = locks[app.appId]
|
|
1509
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (lock) {
|
|
1510
|
-
<span class="cstat-no" title="statement not covered" > app.lockedBy = lock</span>
|
|
1511
|
-
} else {
|
|
1512
|
-
// make sure its definitely not present
|
|
1513
|
-
delete app.lockedBy
|
|
1514
|
-
}
|
|
1515
|
-
}
|
|
1516
|
-
}
|
|
1517
|
-
|
|
1518
|
-
ctx.body = await checkAppMetadata(apps)
|
|
1519
|
-
}
|
|
1520
|
-
|
|
1521
|
-
export async function fetchAppDefinition(ctx: BBContext) {
|
|
1522
|
-
const layouts = await getLayouts()
|
|
1523
|
-
const userRoleId = getUserRoleId(ctx)
|
|
1524
|
-
const accessController = new roles.AccessController()
|
|
1525
|
-
const screens = await accessController.checkScreensAccess(
|
|
1526
|
-
await getScreens(),
|
|
1527
|
-
userRoleId
|
|
1528
|
-
)
|
|
1529
|
-
ctx.body = {
|
|
1530
|
-
layouts,
|
|
1531
|
-
screens,
|
|
1532
|
-
libraries: ["@budibase/standard-components"],
|
|
1533
|
-
}
|
|
1534
|
-
}
|
|
1535
|
-
|
|
1536
|
-
export async function fetchAppPackage(ctx: UserCtx) {
|
|
1537
|
-
const db = context.getAppDB()
|
|
1538
|
-
let application = await db.get(DocumentType.APP_METADATA)
|
|
1539
|
-
const layouts = await getLayouts()
|
|
1540
|
-
let screens = await getScreens()
|
|
1541
|
-
|
|
1542
|
-
// Enrich plugin URLs
|
|
1543
|
-
application.usedPlugins = objectStore.enrichPluginURLs(
|
|
1544
|
-
application.usedPlugins
|
|
1545
|
-
)
|
|
1546
|
-
|
|
1547
|
-
// Only filter screens if the user is not a builder
|
|
1548
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!(ctx.user.builder && ctx.user.builder.global)) {
|
|
1549
|
-
const userRoleId = <span class="cstat-no" title="statement not covered" >getUserRoleId(ctx)</span>
|
|
1550
|
-
const accessController = <span class="cstat-no" title="statement not covered" >new roles.AccessController()</span>
|
|
1551
|
-
<span class="cstat-no" title="statement not covered" > screens = await accessController.checkScreensAccess(screens, userRoleId)</span>
|
|
1552
|
-
}
|
|
1553
|
-
|
|
1554
|
-
const clientLibPath = objectStore.clientLibraryUrl(
|
|
1555
|
-
ctx.params.appId,
|
|
1556
|
-
application.version
|
|
1557
|
-
)
|
|
1558
|
-
|
|
1559
|
-
ctx.body = {
|
|
1560
|
-
application,
|
|
1561
|
-
screens,
|
|
1562
|
-
layouts,
|
|
1563
|
-
clientLibPath,
|
|
1564
|
-
}
|
|
1565
|
-
}
|
|
1566
|
-
|
|
1567
|
-
async function performAppCreate(ctx: BBContext) {
|
|
1568
|
-
const apps = (await dbCore.getAllApps({ dev: true })) as App[]
|
|
1569
|
-
const name = ctx.request.body.name,
|
|
1570
|
-
possibleUrl = ctx.request.body.url
|
|
1571
|
-
checkAppName(ctx, apps, name)
|
|
1572
|
-
const url = sdk.applications.getAppUrl({ name, url: possibleUrl })
|
|
1573
|
-
checkAppUrl(ctx, apps, url)
|
|
1574
|
-
|
|
1575
|
-
const { useTemplate, templateKey, templateString } = ctx.request.body
|
|
1576
|
-
const instanceConfig: any = {
|
|
1577
|
-
useTemplate,
|
|
1578
|
-
key: templateKey,
|
|
1579
|
-
templateString,
|
|
1580
|
-
}
|
|
1581
|
-
if (ctx.request.files && ctx.request.files.templateFile) {
|
|
1582
|
-
instanceConfig.file = ctx.request.files.templateFile
|
|
1583
|
-
}
|
|
1584
|
-
const includeSampleData = isQsTrue(ctx.request.body.sampleData)
|
|
1585
|
-
const tenantId = tenancy.isMultiTenant() ? <span class="branch-0 cbranch-no" title="branch not covered" >tenancy.getTenantId() : n</span>ull
|
|
1586
|
-
const appId = generateDevAppID(generateAppID(tenantId))
|
|
1587
|
-
|
|
1588
|
-
return await context.doInAppContext(appId, async () => {
|
|
1589
|
-
const instance = await createInstance(
|
|
1590
|
-
appId,
|
|
1591
|
-
instanceConfig,
|
|
1592
|
-
includeSampleData
|
|
1593
|
-
)
|
|
1594
|
-
const db = context.getAppDB()
|
|
1595
|
-
|
|
1596
|
-
let newApplication: App = {
|
|
1597
|
-
_id: DocumentType.APP_METADATA,
|
|
1598
|
-
_rev: undefined,
|
|
1599
|
-
appId,
|
|
1600
|
-
type: "app",
|
|
1601
|
-
version: packageJson.version,
|
|
1602
|
-
componentLibraries: ["@budibase/standard-components"],
|
|
1603
|
-
name: name,
|
|
1604
|
-
url: url,
|
|
1605
|
-
template: templateKey,
|
|
1606
|
-
instance,
|
|
1607
|
-
tenantId: tenancy.getTenantId(),
|
|
1608
|
-
updatedAt: new Date().toISOString(),
|
|
1609
|
-
createdAt: new Date().toISOString(),
|
|
1610
|
-
status: AppStatus.DEV,
|
|
1611
|
-
navigation: {
|
|
1612
|
-
navigation: "Top",
|
|
1613
|
-
title: name,
|
|
1614
|
-
navWidth: "Large",
|
|
1615
|
-
navBackground: "var(--spectrum-global-color-gray-100)",
|
|
1616
|
-
links: [
|
|
1617
|
-
{
|
|
1618
|
-
url: "/home",
|
|
1619
|
-
text: "Home",
|
|
1620
|
-
},
|
|
1621
|
-
],
|
|
1622
|
-
},
|
|
1623
|
-
theme: "spectrum--light",
|
|
1624
|
-
customTheme: {
|
|
1625
|
-
buttonBorderRadius: "16px",
|
|
1626
|
-
},
|
|
1627
|
-
}
|
|
1628
|
-
|
|
1629
|
-
// If we used a template or imported an app there will be an existing doc.
|
|
1630
|
-
// Fetch and migrate some metadata from the existing app.
|
|
1631
|
-
try {
|
|
1632
|
-
const existing: App = await db.get(DocumentType.APP_METADATA)
|
|
1633
|
-
const keys: (keyof App)[] = [
|
|
1634
|
-
"_rev",
|
|
1635
|
-
"navigation",
|
|
1636
|
-
"theme",
|
|
1637
|
-
"customTheme",
|
|
1638
|
-
"icon",
|
|
1639
|
-
]
|
|
1640
|
-
keys.forEach(key => {
|
|
1641
|
-
if (existing[key]) {
|
|
1642
|
-
// @ts-ignore
|
|
1643
|
-
newApplication[key] = existing[key]
|
|
1644
|
-
}
|
|
1645
|
-
})
|
|
1646
|
-
|
|
1647
|
-
// Migrate navigation settings and screens if required
|
|
1648
|
-
if (existing) {
|
|
1649
|
-
const navigation = await migrateAppNavigation()
|
|
1650
|
-
if (navigation) {
|
|
1651
|
-
newApplication.navigation = navigation
|
|
1652
|
-
}
|
|
1653
|
-
}
|
|
1654
|
-
} catch (err) {
|
|
1655
|
-
// Nothing to do
|
|
1656
|
-
}
|
|
1657
|
-
|
|
1658
|
-
const response = await db.put(newApplication, { force: true })
|
|
1659
|
-
newApplication._rev = response.rev
|
|
1660
|
-
|
|
1661
|
-
/* istanbul ignore next */
|
|
1662
|
-
if (!env.isTest()) {
|
|
1663
|
-
await createApp(appId)
|
|
1664
|
-
}
|
|
1665
|
-
|
|
1666
|
-
await cache.app.invalidateAppMetadata(appId, newApplication)
|
|
1667
|
-
return newApplication
|
|
1668
|
-
})
|
|
1669
|
-
}
|
|
1670
|
-
|
|
1671
|
-
async function creationEvents(request: any, app: App) {
|
|
1672
|
-
let creationFns: ((app: App) => Promise<void>)[] = []
|
|
1673
|
-
|
|
1674
|
-
const body = request.body
|
|
1675
|
-
if (body.useTemplate === "true") {
|
|
1676
|
-
// from template
|
|
1677
|
-
if (body.templateKey && body.templateKey !== "undefined") {
|
|
1678
|
-
creationFns.push(a => events.app.templateImported(a, body.templateKey))
|
|
1679
|
-
}
|
|
1680
|
-
// from file
|
|
1681
|
-
else if (request.files?.templateFile) {
|
|
1682
|
-
creationFns.push(a => events.app.fileImported(a))
|
|
1683
|
-
}
|
|
1684
|
-
// unknown
|
|
1685
|
-
else <span class="missing-if-branch" title="else path not taken" >E</span>{
|
|
1686
|
-
<span class="cstat-no" title="statement not covered" > console.error("Could not determine template creation event")</span>
|
|
1687
|
-
}
|
|
1688
|
-
}
|
|
1689
|
-
creationFns.push(a => events.app.created(a))
|
|
1690
|
-
|
|
1691
|
-
for (let fn of creationFns) {
|
|
1692
|
-
await fn(app)
|
|
1693
|
-
}
|
|
1694
|
-
}
|
|
1695
|
-
|
|
1696
|
-
async function appPostCreate(ctx: BBContext, app: App) {
|
|
1697
|
-
const tenantId = tenancy.getTenantId()
|
|
1698
|
-
await migrations.backPopulateMigrations({
|
|
1699
|
-
type: MigrationType.APP,
|
|
1700
|
-
tenantId,
|
|
1701
|
-
appId: app.appId,
|
|
1702
|
-
})
|
|
1703
|
-
await creationEvents(ctx.request, app)
|
|
1704
|
-
// app import & template creation
|
|
1705
|
-
if (ctx.request.body.useTemplate === "true") {
|
|
1706
|
-
const { rows } = await getUniqueRows([app.appId])
|
|
1707
|
-
const rowCount = rows ? rows.length : <span class="branch-1 cbranch-no" title="branch not covered" >0</span>
|
|
1708
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (rowCount) {
|
|
1709
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1710
|
-
<span class="cstat-no" title="statement not covered" > await context.doInAppContext(app.appId, <span class="fstat-no" title="function not covered" >() => {</span></span>
|
|
1711
|
-
<span class="cstat-no" title="statement not covered" > return quotas.addRows(rowCount)</span>
|
|
1712
|
-
})
|
|
1713
|
-
} catch (err: any) {
|
|
1714
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (err.code && err.code === errors.codes.USAGE_LIMIT_EXCEEDED) {</span>
|
|
1715
|
-
// this import resulted in row usage exceeding the quota
|
|
1716
|
-
// delete the app
|
|
1717
|
-
// skip pre and post-steps as no rows have been added to quotas yet
|
|
1718
|
-
<span class="cstat-no" title="statement not covered" > ctx.params.appId = app.appId</span>
|
|
1719
|
-
<span class="cstat-no" title="statement not covered" > await destroyApp(ctx)</span>
|
|
1720
|
-
}
|
|
1721
|
-
<span class="cstat-no" title="statement not covered" > throw err</span>
|
|
1722
|
-
}
|
|
1723
|
-
}
|
|
1724
|
-
}
|
|
1725
|
-
}
|
|
1726
|
-
|
|
1727
|
-
export async function create(ctx: BBContext) {
|
|
1728
|
-
const newApplication = await quotas.addApp(() => performAppCreate(ctx))
|
|
1729
|
-
await appPostCreate(ctx, newApplication)
|
|
1730
|
-
await cache.bustCache(cache.CacheKey.CHECKLIST)
|
|
1731
|
-
ctx.body = newApplication
|
|
1732
|
-
ctx.status = 200
|
|
1733
|
-
}
|
|
1734
|
-
|
|
1735
|
-
// This endpoint currently operates as a PATCH rather than a PUT
|
|
1736
|
-
// Thus name and url fields are handled only if present
|
|
1737
|
-
export async function update(ctx: BBContext) {
|
|
1738
|
-
const apps = (await dbCore.getAllApps({ dev: true })) as App[]
|
|
1739
|
-
// validation
|
|
1740
|
-
const name = ctx.request.body.name,
|
|
1741
|
-
possibleUrl = ctx.request.body.url
|
|
1742
|
-
if (name) {
|
|
1743
|
-
checkAppName(ctx, apps, name, ctx.params.appId)
|
|
1744
|
-
}
|
|
1745
|
-
const url = sdk.applications.getAppUrl({ name, url: possibleUrl })
|
|
1746
|
-
if (url) {
|
|
1747
|
-
checkAppUrl(ctx, apps, url, ctx.params.appId)
|
|
1748
|
-
ctx.request.body.url = url
|
|
1749
|
-
}
|
|
1750
|
-
|
|
1751
|
-
const app = await updateAppPackage(ctx.request.body, ctx.params.appId)
|
|
1752
|
-
await events.app.updated(app)
|
|
1753
|
-
ctx.status = 200
|
|
1754
|
-
ctx.body = app
|
|
1755
|
-
}
|
|
1756
|
-
|
|
1757
|
-
export async function updateClient(ctx: BBContext) {
|
|
1758
|
-
// Get current app version
|
|
1759
|
-
const db = context.getAppDB()
|
|
1760
|
-
const application = await db.get(DocumentType.APP_METADATA)
|
|
1761
|
-
const currentVersion = application.version
|
|
1762
|
-
|
|
1763
|
-
// Update client library and manifest
|
|
1764
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!env.isTest()) {
|
|
1765
|
-
<span class="cstat-no" title="statement not covered" > await backupClientLibrary(ctx.params.appId)</span>
|
|
1766
|
-
<span class="cstat-no" title="statement not covered" > await updateClientLibrary(ctx.params.appId)</span>
|
|
1767
|
-
}
|
|
1768
|
-
|
|
1769
|
-
// Update versions in app package
|
|
1770
|
-
const updatedToVersion = packageJson.version
|
|
1771
|
-
const appPackageUpdates = {
|
|
1772
|
-
version: updatedToVersion,
|
|
1773
|
-
revertableVersion: currentVersion,
|
|
1774
|
-
}
|
|
1775
|
-
const app = await updateAppPackage(appPackageUpdates, ctx.params.appId)
|
|
1776
|
-
await events.app.versionUpdated(app, currentVersion, updatedToVersion)
|
|
1777
|
-
ctx.status = 200
|
|
1778
|
-
ctx.body = app
|
|
1779
|
-
}
|
|
1780
|
-
|
|
1781
|
-
export async function revertClient(ctx: BBContext) {
|
|
1782
|
-
// Check app can be reverted
|
|
1783
|
-
const db = context.getAppDB()
|
|
1784
|
-
const application = await db.get(DocumentType.APP_METADATA)
|
|
1785
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!application.revertableVersion) {
|
|
1786
|
-
<span class="cstat-no" title="statement not covered" > ctx.throw(400, "There is no version to revert to")</span>
|
|
1787
|
-
}
|
|
1788
|
-
|
|
1789
|
-
// Update client library and manifest
|
|
1790
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!env.isTest()) {
|
|
1791
|
-
<span class="cstat-no" title="statement not covered" > await revertClientLibrary(ctx.params.appId)</span>
|
|
1792
|
-
}
|
|
1793
|
-
|
|
1794
|
-
// Update versions in app package
|
|
1795
|
-
const currentVersion = application.version
|
|
1796
|
-
const revertedToVersion = application.revertableVersion
|
|
1797
|
-
const appPackageUpdates = {
|
|
1798
|
-
version: revertedToVersion,
|
|
1799
|
-
revertableVersion: null,
|
|
1800
|
-
}
|
|
1801
|
-
const app = await updateAppPackage(appPackageUpdates, ctx.params.appId)
|
|
1802
|
-
await events.app.versionReverted(app, currentVersion, revertedToVersion)
|
|
1803
|
-
ctx.status = 200
|
|
1804
|
-
ctx.body = app
|
|
1805
|
-
}
|
|
1806
|
-
|
|
1807
|
-
const unpublishApp = async (ctx: any) => {
|
|
1808
|
-
let appId = ctx.params.appId
|
|
1809
|
-
appId = dbCore.getProdAppID(appId)
|
|
1810
|
-
|
|
1811
|
-
const db = context.getProdAppDB()
|
|
1812
|
-
const result = await db.destroy()
|
|
1813
|
-
|
|
1814
|
-
await events.app.unpublished({ appId } as App)
|
|
1815
|
-
|
|
1816
|
-
// automations only in production
|
|
1817
|
-
await cleanupAutomations(appId)
|
|
1818
|
-
|
|
1819
|
-
await cache.app.invalidateAppMetadata(appId)
|
|
1820
|
-
return result
|
|
1821
|
-
}
|
|
1822
|
-
|
|
1823
|
-
async function destroyApp(ctx: BBContext) {
|
|
1824
|
-
let appId = ctx.params.appId
|
|
1825
|
-
appId = dbCore.getProdAppID(appId)
|
|
1826
|
-
const devAppId = dbCore.getDevAppID(appId)
|
|
1827
|
-
|
|
1828
|
-
// check if we need to unpublish first
|
|
1829
|
-
if (await dbCore.dbExists(appId)) {
|
|
1830
|
-
// app is deployed, run through unpublish flow
|
|
1831
|
-
await sdk.applications.syncApp(devAppId)
|
|
1832
|
-
await unpublishApp(ctx)
|
|
1833
|
-
}
|
|
1834
|
-
|
|
1835
|
-
const db = dbCore.getDB(devAppId)
|
|
1836
|
-
// standard app deletion flow
|
|
1837
|
-
const app = await db.get(DocumentType.APP_METADATA)
|
|
1838
|
-
const result = await db.destroy()
|
|
1839
|
-
await quotas.removeApp()
|
|
1840
|
-
await events.app.deleted(app)
|
|
1841
|
-
|
|
1842
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!env.isTest()) {
|
|
1843
|
-
<span class="cstat-no" title="statement not covered" > await deleteApp(appId)</span>
|
|
1844
|
-
}
|
|
1845
|
-
|
|
1846
|
-
await removeAppFromUserRoles(ctx, appId)
|
|
1847
|
-
await cache.app.invalidateAppMetadata(devAppId)
|
|
1848
|
-
return result
|
|
1849
|
-
}
|
|
1850
|
-
|
|
1851
|
-
async function preDestroyApp(ctx: BBContext) {
|
|
1852
|
-
const { rows } = await getUniqueRows([ctx.params.appId])
|
|
1853
|
-
ctx.rowCount = rows.length
|
|
1854
|
-
}
|
|
1855
|
-
|
|
1856
|
-
async function postDestroyApp(ctx: BBContext) {
|
|
1857
|
-
const rowCount = ctx.rowCount
|
|
1858
|
-
await groups.cleanupApp(ctx.params.appId)
|
|
1859
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (rowCount) {
|
|
1860
|
-
<span class="cstat-no" title="statement not covered" > await quotas.removeRows(rowCount)</span>
|
|
1861
|
-
}
|
|
1862
|
-
}
|
|
1863
|
-
|
|
1864
|
-
export async function destroy(ctx: BBContext) {
|
|
1865
|
-
await preDestroyApp(ctx)
|
|
1866
|
-
const result = await destroyApp(ctx)
|
|
1867
|
-
await postDestroyApp(ctx)
|
|
1868
|
-
ctx.status = 200
|
|
1869
|
-
ctx.body = result
|
|
1870
|
-
}
|
|
1871
|
-
|
|
1872
|
-
export const unpublish = async (ctx: BBContext) => {
|
|
1873
|
-
const prodAppId = dbCore.getProdAppID(ctx.params.appId)
|
|
1874
|
-
const dbExists = await dbCore.dbExists(prodAppId)
|
|
1875
|
-
|
|
1876
|
-
// check app has been published
|
|
1877
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!dbExists) {
|
|
1878
|
-
<span class="cstat-no" title="statement not covered" > return ctx.throw(400, "App has not been published.")</span>
|
|
1879
|
-
}
|
|
1880
|
-
|
|
1881
|
-
await preDestroyApp(ctx)
|
|
1882
|
-
await unpublishApp(ctx)
|
|
1883
|
-
await postDestroyApp(ctx)
|
|
1884
|
-
ctx.status = 204
|
|
1885
|
-
}
|
|
1886
|
-
|
|
1887
|
-
export async function sync(ctx: BBContext) {
|
|
1888
|
-
const appId = ctx.params.appId
|
|
1889
|
-
try {
|
|
1890
|
-
ctx.body = await sdk.applications.syncApp(appId)
|
|
1891
|
-
} catch (err: any) {
|
|
1892
|
-
ctx.throw(err.status || 400, err.message)
|
|
1893
|
-
}
|
|
1894
|
-
}
|
|
1895
|
-
|
|
1896
|
-
export async function <span class="cstat-no" title="statement not covered" >updateAppPackage<span class="fstat-no" title="function not covered" >(</span>a</span>ppPackage: any, appId: any) {
|
|
1897
|
-
return context.doInAppContext(appId, async () => {
|
|
1898
|
-
const db = context.getAppDB()
|
|
1899
|
-
const application = await db.get(DocumentType.APP_METADATA)
|
|
1900
|
-
|
|
1901
|
-
const newAppPackage = { ...application, ...appPackage }
|
|
1902
|
-
if (appPackage._rev !== application._rev) {
|
|
1903
|
-
newAppPackage._rev = application._rev
|
|
1904
|
-
}
|
|
1905
|
-
|
|
1906
|
-
// the locked by property is attached by server but generated from
|
|
1907
|
-
// Redis, shouldn't ever store it
|
|
1908
|
-
delete newAppPackage.lockedBy
|
|
1909
|
-
|
|
1910
|
-
await db.put(newAppPackage)
|
|
1911
|
-
// remove any cached metadata, so that it will be updated
|
|
1912
|
-
await cache.app.invalidateAppMetadata(appId)
|
|
1913
|
-
return newAppPackage
|
|
1914
|
-
})
|
|
1915
|
-
}
|
|
1916
|
-
|
|
1917
|
-
async function migrateAppNavigation() {
|
|
1918
|
-
const db = context.getAppDB()
|
|
1919
|
-
const existing: App = await db.get(DocumentType.APP_METADATA)
|
|
1920
|
-
const layouts: Layout[] = await getLayouts()
|
|
1921
|
-
const screens: Screen[] = await getScreens()
|
|
1922
|
-
|
|
1923
|
-
// Migrate all screens, removing custom layouts
|
|
1924
|
-
for (let screen of screens) {
|
|
1925
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!screen.layoutId) {
|
|
1926
|
-
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
1927
|
-
}
|
|
1928
|
-
const layout = layouts.find(layout => layout._id === screen.layoutId)
|
|
1929
|
-
screen.layoutId = undefined
|
|
1930
|
-
screen.showNavigation = layout?.props.navigation !== "None"
|
|
1931
|
-
screen.width = layout?.props.width || <span class="branch-1 cbranch-no" title="branch not covered" >"Large"</span>
|
|
1932
|
-
await db.put(screen)
|
|
1933
|
-
}
|
|
1934
|
-
|
|
1935
|
-
// Migrate layout navigation settings
|
|
1936
|
-
const { name, customTheme } = existing
|
|
1937
|
-
const layout = layouts?.find(
|
|
1938
|
-
(layout: Layout) => layout._id === BASE_LAYOUT_PROP_IDS.PRIVATE
|
|
1939
|
-
)
|
|
1940
|
-
if (layout && !existing.navigation) {
|
|
1941
|
-
let navigationSettings: any = {
|
|
1942
|
-
navigation: "Top",
|
|
1943
|
-
title: name,
|
|
1944
|
-
navWidth: "Large",
|
|
1945
|
-
navBackground:
|
|
1946
|
-
customTheme?.navBackground || <span class="branch-1 cbranch-no" title="branch not covered" >"var(--spectrum-global-color-gray-50)",</span>
|
|
1947
|
-
navTextColor:
|
|
1948
|
-
customTheme?.navTextColor || <span class="branch-1 cbranch-no" title="branch not covered" >"var(--spectrum-global-color-gray-800)",</span>
|
|
1949
|
-
}
|
|
1950
|
-
if (layout) {
|
|
1951
|
-
navigationSettings.hideLogo = layout.props.hideLogo
|
|
1952
|
-
navigationSettings.hideTitle = layout.props.hideTitle
|
|
1953
|
-
navigationSettings.title = layout.props.title || <span class="branch-1 cbranch-no" title="branch not covered" >name</span>
|
|
1954
|
-
navigationSettings.logoUrl = layout.props.logoUrl
|
|
1955
|
-
navigationSettings.links = layout.props.links
|
|
1956
|
-
navigationSettings.navigation = layout.props.navigation || <span class="branch-1 cbranch-no" title="branch not covered" >"Top"</span>
|
|
1957
|
-
navigationSettings.sticky = layout.props.sticky
|
|
1958
|
-
navigationSettings.navWidth = layout.props.width || <span class="branch-1 cbranch-no" title="branch not covered" >"Large"</span>
|
|
1959
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (navigationSettings.navigation === "None") {
|
|
1960
|
-
<span class="cstat-no" title="statement not covered" > navigationSettings.navigation = "Top"</span>
|
|
1961
|
-
}
|
|
1962
|
-
}
|
|
1963
|
-
return navigationSettings
|
|
1964
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>{
|
|
1965
|
-
<span class="cstat-no" title="statement not covered" > return null</span>
|
|
1966
|
-
}
|
|
1967
|
-
}
|
|
1968
|
-
</pre></td></tr></table></pre>
|
|
1969
|
-
|
|
1970
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1971
|
-
</div><!-- /wrapper -->
|
|
1972
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1973
|
-
Code coverage generated by
|
|
1974
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1975
|
-
at Wed Mar 01 2023 22:17:46 GMT+0000 (Coordinated Universal Time)
|
|
1976
|
-
</div>
|
|
1977
|
-
<script src="../../../prettify.js"></script>
|
|
1978
|
-
<script>
|
|
1979
|
-
window.onload = function () {
|
|
1980
|
-
prettyPrint();
|
|
1981
|
-
};
|
|
1982
|
-
</script>
|
|
1983
|
-
<script src="../../../sorter.js"></script>
|
|
1984
|
-
<script src="../../../block-navigation.js"></script>
|
|
1985
|
-
</body>
|
|
1986
|
-
</html>
|
|
1987
|
-
|